T-SQL - 将datetime转换为未分离的ISO值

时间:2018-04-16 13:17:08

标签: sql sql-server sql-server-2008-r2

我尝试将以下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 Server 2008R2

4 个答案:

答案 0 :(得分:2)

应该是:

select CONVERT(varchar(20), GETDATE(), 112)

<强>输出

20180416

如果你想要约会&amp;两个时间,然后可以尝试使用这个:

select CONVERT(varchar(20), GETDATE(), 112) + replace(CONVERT(varchar(20), GETDATE(), 108), ':', '')

<强>输出

20180416193327

答案 1 :(得分:2)

类似的东西:

--20180416152520
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), GETDATE(), 121), '-', ''), ':', ''), ' ', '') AS DesiredFormat

<强>输出:

20180416152520

答案 2 :(得分:1)

检查出来:

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

答案 3 :(得分:0)

当您只需要format()时,这些似乎都太麻烦了:

select format(getdate(), 'yyyyMMddHHmmss') as ISODateTime;