Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL-将扩展奥地利日期转换为其他日期格式_Sql_Sql Server_Date - Fatal编程技术网

MS SQL-将扩展奥地利日期转换为其他日期格式

MS SQL-将扩展奥地利日期转换为其他日期格式,sql,sql-server,date,Sql,Sql Server,Date,我想转换国家特定格式的日期值。 样本: 蒙塔格,07岁。詹纳2013 14:51:08 这不是标准的德语,而是奥地利语。 我认为把奥地利语换成标准德语是没有问题的(在本例中为一月语) 我没有通过使用SQL命令convert来转换它,尽管这是可能的 你可以这样做:(警告,这太难看了) 创建月份名称和编号的表格: CREATE TABLE Months ( Month_Number char(2), Month_Name varchar(20) ) 用月份填充它: INSERT INT

我想转换国家特定格式的日期值。 样本:

蒙塔格,07岁。詹纳2013 14:51:08

这不是标准的德语,而是奥地利语。 我认为把奥地利语换成标准德语是没有问题的(在本例中为一月语)

我没有通过使用SQL命令convert来转换它,尽管这是可能的


你可以这样做:(警告,这太难看了)

创建月份名称和编号的表格:

CREATE TABLE Months
(
   Month_Number char(2),
   Month_Name varchar(20)
)
用月份填充它:

INSERT INTO Months VALUES
('01', 'Jänner'),
('02', 'Feber'),
('03', 'März'),
('04', 'April'),
('05', 'Mai'),
('06', 'Juni'),
('07', 'Juli'),
('08', 'August'),
('09', 'September'),
('10', 'Oktober'),
('11', 'November'),
('12', 'Dezember')
现在是难看的部分:使用子字符串和patindex创建标准日期格式:

DECLARE @StringDate varchar(50) = 'Montag, 07. Jänner 2013 14:51:08';

SELECT @StringDate As SourceDate,
       -- Year
       SUBSTRING(@StringDate, PATINDEX('%[0-9][0-9][0-9][0-9] %', @StringDate), 4) +'-'+
       -- Month
       Month_Number +'-'+
       -- Day
       SUBSTRING(@StringDate, PATINDEX('%, [0-3][0-9]. %', @StringDate) + 2, 2) +' '+
       -- Time
       SUBSTRING(@StringDate, PATINDEX('% [0-2][0-9]:[0-5][0-9]:[0-5][0-9]%', @StringDate) + 1, 8) As NormallyFormattedDate
FROM Months
WHERE Month_Name = SUBSTRING(@StringDate, PATINDEX('%, [0-3][0-9]. %', @StringDate)+6, PATINDEX('%[0-9][0-9][0-9][0-9] %', @StringDate) - (PATINDEX('%, [0-3][0-9]. %', @StringDate)+6))
结果:

SourceDate                                         NormallyFormattedDate
-------------------------------------------------- ---------------------
Montag, 07. Jänner 2013 14:51:08                   2013-01-07 14:51:08

当然,只有在格式始终相同的情况下(工作日,dd月。yyyy HH:mm:ss)

您如何存储以及在哪里显示日期?我有一个MS SQL Server(目前为2008 R2/2014年即将推出)。目前,我通过普通的SELECT命令检查数据,以了解如何转换。然后,我将更新这些值,用所需样式的日期替换它们。不要将日期存储在除
DateTime
类型列之外的任何列中,这样您就可以控制UI中的格式,并且数据本身是区域独立的。这是
Montag,07吗。Jänner 2013 14:51:08
日期是如何存储的(即它们存储为varchar值),或者您希望如何显示它们?thx-由于应用程序在该SQL上工作-这些值存储在varchar中,之后也将存储在varchar中