如何在 SQL Server 中将字符串“2016 年 12 月 1 日”转换为日期类型?
CONVERT(date, '01 December 2016', 106)
预期日期结果“2016 年 12 月 1 日”
如何在 SQL Server 中将字符串“2016 年 12 月 1 日”转换为日期类型?
CONVERT(date, '01 December 2016', 106)
预期日期结果“2016 年 12 月 1 日”
如果 2012+ 你可以使用 Format()
Select Format(convert(date,'01 December 2016'),'dd MMM yyyy')
退货
01 Dec 2016
使用特定于文化的日期/时间格式是非常危险的,使用特定于语言和文化的格式更糟糕......
如果可能的话,以适当的类型存储日期/时间值!
在我的(德国)系统中,由于“十二月”,即德国的“十二月”,直接演员或转换会中断。看看这个:
SET LANGUAGE English; --try the same with "German"
DECLARE @d VARCHAR(100)='01 December 2016';
SELECT CONVERT(VARCHAR(11),CONVERT(DATE,@d,106),106);
结果
01 Dec 2016
永远不要依赖隐式转换:在任何情况下都使用第三个参数调用!CONVERT
第三个参数106
告诉 SQL Server 日期的格式(如何解析它)。第一个CONVERTS
s 目标类型是DATE
. 这 - 现在正确表示!-date 可以再次转换为VARCHAR(11)
106 作为第三个参数,现在指定输出格式。
要更深入地了解特定语言的日期部分,您可以运行以下查询:
SELECT * FROM sys.syslanguages;
FORMAT()
John Cappelletti 指出的