【问题标题】:.NET & SQL Server - Datetime or DateTimeOffset? [duplicate].NET & SQL Server - 日期时间或日期时间偏移? [复制]
【发布时间】:2018-03-10 21:08:30
【问题描述】:

自从我使用 .NET 以来,我一直在 .NET 和 SQL Server DateTime 数据类型中存储日期和时间数据。我最近意识到 .NET 和 SQL Server 中都存在 DateTimeOffset 类型。

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

如果不是,我什么时候会使用其中一个?

【问题讨论】:

标签: c# .net sql-server datetime datetimeoffset


【解决方案1】:

日期时间

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

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

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

DateTimeOffest

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

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

  • 唯一且明确地识别单个时间点。 DateTimeOffset 类型可用于明确定义“现在”的含义、记录事务时间、记录系统或应用程序事件的时间以及记录文件创建和修改时间

  • 执行一般日期和时间运算

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

请根据您的需要使用。在我的情况下,我一直在使用 DateTime,它根本没有给我带来任何问题,但是如果你喜欢 OffsetDateTime。

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 2016-09-19
    • 2011-05-18
    • 2011-07-20
    • 2017-03-31
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多