.NET和SQL Server - Datetime还是DateTimeOffset?

3
自从我开始使用.NET以来,我一直在使用.NET和SQL Server的DateTime数据类型来存储日期和时间数据。最近我意识到.NET和SQL Server中存在DateTimeOffset类型。
现在是否应该将DateTimeOffset类型作为我的默认数据类型来处理和存储带有时间的日期?
如果不是,那么什么情况下会使用其中一个?

请查看 https://dev59.com/h2855IYBdhLWcg3wc0Dy - AB_87
1个回答

5

日期时间(DateTime)

在我的案例中,我使用DateTime是因为它更易于使用,并且自从我开始编程以来一直在使用它。

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

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

带偏移量的日期时间(DateTimeOffest)

DateTimeOffset结构表示一个日期和时间值,以及指示该值与UTC相差多少的偏移量。因此,该值始终可以明确地标识单个时间点。

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

  • 唯一而明确地标识单个时间点。DateTimeOffset类型可用于明确定义“当前时间”,记录交易时间、系统或应用程序事件的时间以及记录文件创建和修改时间。

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

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

根据您的需求使用适合您的类型。在我的案例中,我一直使用DateTime并且没有任何问题,但如果您喜欢可以使用带偏移量的OffsetDateTime。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接