T-SQL - 将日期时间转换为未分隔的 ISO 值
T-SQL - Convert datetime to unseparated ISO value
我正在尝试将以下 DATETIME
转换为 ISO 格式:
-- Today's Date
2018-04-16 2:04PM
我计划将其解析为 char
值 NVARCHAR
以便我可以将其连接为字符串的一部分。
期望的结果应该是:
-- Date and time unseparated
20180416140422
经过一些研究,我发现 here
CONVERT(datetime, GETDATE(), 112)
使用 112 格式代码应该可以得到我想要的格式,但不知何故我得到了以下示例输出:
--Formatted using 112 format
Apr 16 2018 2:04PM
这是为什么?我只是想格式化 DATETIME
不分隔的对象。
此外,无论有没有时间标记到最后,我将如何做到这一点?
使用 SQL 服务器 2008R2
应该是:
select CONVERT(varchar(20), GETDATE(), 112)
输出
20180416
如果你同时想要日期和时间,那么可以尝试使用这个:
select CONVERT(varchar(20), GETDATE(), 112) + replace(CONVERT(varchar(20), GETDATE(), 108), ':', '')
输出
20180416193327
看看这个:
SELECT CONVERT(varchar(20), GETDATE(), 112) AS ISODate
, CONVERT(varchar(50), GETDATE(), 126) AS ISOWithTime_WorksWithAnyLanguageSetting;
我相信列的名称是不言自明的。
输出示例:
ISODate | ISOWithTime_WorksWithAnyLanguageSetting
------------------------------------------------------
20180416 | 2018-04-16T15:26:50.607
有关带有示例的 CONVERT
函数的更多格式的信息,请查看 this source。
类似于:
--20180416152520
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), GETDATE(), 121), '-', ''), ':', ''), ' ', '') AS DesiredFormat
输出:
20180416152520
当您只需要 format()
:
时,这些似乎都过于繁琐了
select format(getdate(), 'yyyyMMddHHmmss') as ISODateTime;
我正在尝试将以下 DATETIME
转换为 ISO 格式:
-- Today's Date
2018-04-16 2:04PM
我计划将其解析为 char
值 NVARCHAR
以便我可以将其连接为字符串的一部分。
期望的结果应该是:
-- Date and time unseparated
20180416140422
经过一些研究,我发现 here
CONVERT(datetime, GETDATE(), 112)
使用 112 格式代码应该可以得到我想要的格式,但不知何故我得到了以下示例输出:
--Formatted using 112 format
Apr 16 2018 2:04PM
这是为什么?我只是想格式化 DATETIME
不分隔的对象。
此外,无论有没有时间标记到最后,我将如何做到这一点?
使用 SQL 服务器 2008R2
应该是:
select CONVERT(varchar(20), GETDATE(), 112)
输出
20180416
如果你同时想要日期和时间,那么可以尝试使用这个:
select CONVERT(varchar(20), GETDATE(), 112) + replace(CONVERT(varchar(20), GETDATE(), 108), ':', '')
输出
20180416193327
看看这个:
SELECT CONVERT(varchar(20), GETDATE(), 112) AS ISODate
, CONVERT(varchar(50), GETDATE(), 126) AS ISOWithTime_WorksWithAnyLanguageSetting;
我相信列的名称是不言自明的。
输出示例:
ISODate | ISOWithTime_WorksWithAnyLanguageSetting
------------------------------------------------------
20180416 | 2018-04-16T15:26:50.607
有关带有示例的 CONVERT
函数的更多格式的信息,请查看 this source。
类似于:
--20180416152520
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), GETDATE(), 121), '-', ''), ':', ''), ' ', '') AS DesiredFormat
输出:
20180416152520
当您只需要 format()
:
select format(getdate(), 'yyyyMMddHHmmss') as ISODateTime;