我从具有多个 datetimeoffet
列的表中选择一条记录,当我添加 for json auto 时,它将它从
2017-06-21 08:12:16.1430000 +00:00
到
2017-06-21T08:12:16.1430000Z
这是我的代码:
select LastUpdateTimestamp
from table
where id = 1
for json auto
产生这个输出:
[{"LastUpdateTimestamp":"2017-06-21T08:12:16.1430000Z"}]
如何在不转换的情况下保持其格式,或者如何在 C# 中将其转换回该格式?我正在做很多动态工作,我不能依赖所有日期来适应特定格式。
最佳答案
There is no JSON datetime data type nor standard for string formats for datetime data in JSON .底层 SQL Server datetimeoffset(7)
数据类型是一个 10 字节的二进制结构,没有格式概念,因此它不能在不转换的情况下用 JSON 字符串表示。
默认情况下,SQL Server 使用 JSON AUTO
返回 ISO 8601 格式的字符串。您遇到的问题是“+00:00”被 UTC 抑制;仅当 UTC 偏移量不为零时才包含偏移量。
如果 JSON AUTO 默认值不够用,您可以使用 FORMAT
T-SQL 函数来控制字符串格式:
FORMAT(LastUpdateTimestamp,'O') AS LastUpdateTimestamp
关于c# - SQL Server datetimeoffset 和 json 自动将 datetimeoffset 更改为 datetime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50629455/