【发布时间】:2018-02-21 22:43:17
【问题描述】:
对于 XML 消息,我需要 SQL Server 2008 R2 来选择以下格式的一组日期:
yyyy-mm-ddThh:mi:ss.mmmZ
我在 Google 和 Stack Overflow 上搜索了一下,得到了以下解决方案:
SELECT STUFF(CONVERT(VARCHAR(50), CAST(GETDATE() AS DATETIMEOFFSET), 127),24,4,'')
除了日期的毫秒为“000”的情况外,这一切正常。在这种情况下,它会选择 NULL。
您能帮我找到一个同样适用于毫秒为“000”的日期的解决方案吗?
您可以使用以下代码进行操作:
declare @timestamps table (
i int,
timestamp datetime
)
insert into @timestamps (i, timestamp)
values
(1, '2017-09-13 01:00:00.003'),
(2, '2017-09-13 02:00:00.333'),
(3, '2017-09-13 03:00:00.000'),
(4, '2017-09-13 04:00:00')
select i, timestamp, STUFF(CONVERT(VARCHAR(50), CAST(timestamp AS DATETIMEOFFSET), 127),24,4,'') from @timestamps
【问题讨论】:
-
这还不够吗:
select i, timestamp, CONVERT(varchar(50), timestamp, 127) FROM @timestamps -
我首先尝试了这个,但是 - 根据 MS SQL 文档中的内容 - 它没有在末尾显示“Z”(时区偏移)。所以你的例子的输出是
2017-09-13T01:00:00.003而不是2017-09-13T01:00:00.003Z。
标签: sql sql-server sql-server-2008 datetime format