SQL Server转换2016年12月1日至今

时间:2017-04-04 14:08:06

标签: sql sql-server tsql date sql-convert

如何转换字符串" 2016年12月1日"到SQL Server中的日期类型?

CONVERT(date, '01 December 2016', 106)

预计日期结果" 2016年12月1日"

2 个答案:

答案 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;

顺便说一句:如果你使用的是SQL Server 2012+,你应该按照John Cappelletti的指示呼叫FORMAT()

相关问题