如何转换字符串" 2016年12月1日"到SQL Server中的日期类型?
CONVERT(date, '01 December 2016', 106)
预计日期结果" 2016年12月1日"
答案 0 :(得分:3)
如果2012+你可以使用Format()
Select Format(convert(date,'01 December 2016'),'dd MMM yyyy')
返回
01 Dec 2016
答案 1 :(得分:1)
使用特定于文化的日期/时间格式是非常危险的,使用语言和文化特定格式更糟糕......
如果可能以适当的类型存储日期/时间值!
在我的(德国)系统中,由于" 12月"直接演员或转换将会中断,这是" Dezember"在德国。看看这个:
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
永远不要依赖隐式转换:Call CONVERT
with the third parameter in any case!
第三个参数106
告诉SQL Server日期的格式(如何解析它)。第一个CONVERTS
目标类型为DATE
。这 - 现在正确代表! - 日期可以再次转换为VARCHAR(11)
,其中106为第三个参数,现在指定输出格式。
要深入了解特定于语言的日期部分,您可以运行此查询:
SELECT * FROM sys.syslanguages;
FORMAT()