我正在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 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