在T-SQL中将日期时间转换为nvarchar(8)

时间:2019-04-23 01:55:25

标签: sql sql-server tsql

我正在尝试将datetime列转换为ISO格式,例如yyyymmdd。例如,我希望能够将'13 dec 2018'转换为'20181213'。

根据Microsoft's T-SQL Docs,我应该可以使用

convert(nvarchar(8), '13 dec 2018', 112)

但是这不起作用-我得到的结果是'13 dec 2',它看起来只不过是原始字符串,该字符串被缩减为8个字符。

我也尝试使用

convert(datetime, '13 dec 2018', 112)

这给了我'Dec 13 2018 12:00 AM'的结果-同样,该函数应该产生什么。

我做错了什么?我可以使用datepart()和串联字符串很容易地解决问题,但是如果可能的话,我宁愿使用更优雅的方法。

4 个答案:

答案 0 :(得分:4)

合并它们:

convert(nvarchar(8), convert(datetime, '13 dec 2018'), 112)

我不建议您将格式112用于第一次转换,因为这会引起误解。 SQL Server非常擅长进行无格式转换。如果您确实使用一个,则合适的是106

答案 1 :(得分:1)

我知道了-因为我将日期输入为字符串,而不是先不将其转换为datetime值,所以我将日期视为字符串。当我这样处理时:

convert(nvarchar(8), cast('13 dec 2018' as datetime), 112)

我得到了预期的结果'20181213'。

答案 2 :(得分:0)

选择convert(nvarchar(8),cast(GETDATE()作为datetime),112)作为TodayDate

enter image description here

答案 3 :(得分:0)

YYYYMMDD格式可以通过datetime转换为varchar格式。

select convert(varchar(8),convert(datetime, '13 dec 2018'),112)

上面的查询提供了所需的结果