关于c#:. NET&SQL Server – Datetime或DateTimeOffset?

.NET & SQL Server - Datetime or DateTimeOffset?

本问题已经有最佳答案,请猛点这里访问。

只要我一直在使用.NET,我就一直在.NET&存储中存储日期和时间数据。 SQL Server DateTime数据类型。 我最近意识到.NET和Linux中存在DateTimeOffset类型。 SQL Server。

DateTimeOffset类型现在应该成为我用于处理和存储日期的默认数据类型吗?

如果没有,我何时会使用一个而不是另一个?


约会时间

在我的情况下,我使用Datetime,因为它更容易,自从我开始编程以来我一直在使用它。

  • 仅使用日期
  • 仅与时俱进
  • 使用抽象的日期和时间
  • 处理缺少时区信息的日期和时间
  • 仅使用UTC日期和时间
  • 从.NET之外的源(例如SQL数据库)检索日期和时间信息。通常,这些源以与DateTime结构兼容的简单格式存储日期和时间信息

  • 执行日期和时间算术,但关注一般结果。例如,在对特定日期和时间增加六个月的附加操作中,是否针对夏令时调整结果通常并不重要

DateTimeOffest

DateTimeOffset结构表示日期和时间值,以及指示该值与UTC的差异程度的偏移量。因此,该值总是明确地标识单个时间点。

DateTimeOffset类型包括DateTime类型的所有功能以及时区感知。这使其适用于执行以下操作的应用程序:

  • 独特且明确地识别单个时间点。 DateTimeOffset类型可用于明确定义"now"的含义,记录事务时间,记录系统或应用程序事件的时间,以及记录文件创建和修改时间

  • 执行通用日期和时间算术

  • 保留多个相关时间,只要这些时间存储为两个单独的值或两个结构成员

使用适合您的需求。在我的情况下,我一直在使用DateTime,它根本没有给我一个问题,但是如果你喜欢去OffsetDateTime。