c# - SQL Server datetimeoffset 和 json 自动将 datetimeoffset 更改为 datetime

标签 c# sql-server tsql

我从具有多个 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/

相关文章:

C# 反射在运行时创建接口(interface)

c# - 如何获取 Windows Phone Mango 上所有可用键盘的列表(在 C# 代码中)?

c# - 从 datagridview 更新 SQL Server 数据库

如果行不存在,则 Sql 插入

sql - 从 SQL DATE 中仅获取月份和年份

sql - 如何包含行号但显示平局?

c# - 如何通过代码更改 Unity 中着色器的 alpha

c# - 当子对象为 null 时,访问另一个对象中包含的对象中的变量

c# - ASP.NET MVC 4 : error when making Ajax call to controller to update SQL Server database

sql - 如果我们在有序集中有重复值,如何解决 LEAD 或 LAG 分析函数中的关系?