SQL 服务器转换 2016 年 12 月 1 日至今
SQL Server Convert 01 December 2016 to date
如何将字符串“2016 年 12 月 1 日”转换为 SQL 服务器中的日期类型?
CONVERT(date, '01 December 2016', 106)
预计结果日期“2016 年 12 月 1 日”
如果 2012+ 你可以使用 Format()
Select Format(convert(date,'01 December 2016'),'dd MMM yyyy')
Returns
01 Dec 2016
使用特定于文化的 date/time 格式非常危险,使用特定于语言和文化的格式更糟糕...
如果可能的话以适当的类型存储date/time值!
在我的(德语)系统中,由于 "December",直接转换或转换会中断,在德国是 "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 服务器日期的格式(如何解析)。第一个 CONVERTS
的目标类型是 DATE
。这 - 现在正确表示! - 日期可以再次转换为 VARCHAR(11)
,其中 106 作为第三个参数,现在指定 输出格式 。
要更深入地了解特定于语言的日期部分,您可以运行此查询:
SELECT * FROM sys.syslanguages;
顺便说一句:如果您使用的是 SQL Server 2012+,您应该按照 John Cappelletti
所指出的那样调用 FORMAT()
如何将字符串“2016 年 12 月 1 日”转换为 SQL 服务器中的日期类型?
CONVERT(date, '01 December 2016', 106)
预计结果日期“2016 年 12 月 1 日”
如果 2012+ 你可以使用 Format()
Select Format(convert(date,'01 December 2016'),'dd MMM yyyy')
Returns
01 Dec 2016
使用特定于文化的 date/time 格式非常危险,使用特定于语言和文化的格式更糟糕...
如果可能的话以适当的类型存储date/time值!
在我的(德语)系统中,由于 "December",直接转换或转换会中断,在德国是 "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 服务器日期的格式(如何解析)。第一个 CONVERTS
的目标类型是 DATE
。这 - 现在正确表示! - 日期可以再次转换为 VARCHAR(11)
,其中 106 作为第三个参数,现在指定 输出格式 。
要更深入地了解特定于语言的日期部分,您可以运行此查询:
SELECT * FROM sys.syslanguages;
顺便说一句:如果您使用的是 SQL Server 2012+,您应该按照 John Cappelletti
所指出的那样调用FORMAT()