gpt4 book ai didi

C# DateTime 在内存中有 'Z',但在 SQL Db 中没有

转载 作者:行者123 更新时间:2023-11-30 23:29:19 25 4
gpt4 key购买 nike

当我在内存中有一个 DateTime 对象时,它会像这样输出到屏幕上:

“2015-12-28T20:47:01.9382255Z”

将其存储到 SQL 数据库并检索后,'Z' 被删除:

“2015-12-28T20:47:01.9382255”

我正在尝试以 UTC 时间保存服务器上的所有日期。我是否必须以某种特殊方式设置 SQL 列来存储“Z”字符?

我希望存储“Z”,我不希望它从 SQL 存储中删除。

最佳答案

Z 表示祖鲁时间,它属于 DateTime 实例的文本表示。

在 Sql Server 中,datetimedatetime2 类型都不支持时区。这就是为什么你不能在这些类型上保存它。但是 datetimeoffset 支持时区。

但在这种情况下,您需要插入 DateTimeOffset 而不是 DateTime

var dto = DateTimeOffset.Parse("2015-12-28T20:47:01.9382255Z");

Supported String Literal Formats for datetimeoffset部分;

ISO Format - YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC)

Description - This format by ISO definition indicates the datetime portion should be expressed in Coordinated Universal Time (UTC). For example, 1999-12-12 12:30:30.12345 -07:00 should be represented as 1999-12-12 19:30:30.12345Z.

如果您真的想在 sql server 中看到 Z,那么看起来这是唯一的方法。

关于C# DateTime 在内存中有 'Z',但在 SQL Db 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com