我尝试将以下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
答案 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;