将日期转换为SQL Server中的ISO 8601的JSON路径?

问题描述 投票:1回答:1

我正在SQL Server中将数据转换为json(使用FOR JSON PATH),该数据中的一列具有datetime数据类型,我需要将其转换为ISO8601

正确格式:2018-11-13T20:20:39+00:00

[当我尝试CONVERT(NVARCHAR(33), datetimecolumn, 127)时,结果是:2019-10-24T12:35:12.870

[当我尝试TODATETIMEOFFSET(datetimecolumn, '+00:00')时,结果是:2015-03-31T00:00:00Z

在两种情况下我都没有得到+00:00

sql json sql-server iso8601
1个回答
0
投票

似乎SQL Server用Z表示零偏移量或UTC时间。

如果要运行SELECT TODATETIMEOFFSET(GETDATE(),60),它将获取当前时间并应用1小时的偏移量,那么您将获得期望的格式。但是,我认为表示UTC的Z在ISO8601中是完全可以接受的,但可能会误解。

此命令似乎可以按预期输出JSON。

SELECT TODATETIMEOFFSET(GETDATE(),60) as T FOR JSON PATH

如果将零偏移量表示为00:00是至关重要的,我相信您将被迫使用字符串。

select CAST(CONVERT(NVARCHAR(33), getdate(), 127) as NVARCHAR(35)) + '+00:00' as T FOR JSON PATH

© www.soinside.com 2019 - 2024. All rights reserved.