5

我想将 aac# DateTimeOffset 值存储在 SQL Server 2005 数据库中。

Sql 2008 将此作为内置类型,但 SQL Server 2005 没有。

DateTimeOffset 结构有一个 DateTime 值,我将它存储为 DateTime,一个 Offset 属性(TimeSpan 类型)。由于这是相对于 UTC 的时区,因此推测它通常是整数小时或半小时。

有关如何最好地将其存储在 SQL Server 2005 数据库中的建议?

4

3 回答 3

7

假设偏移量是几个小时或半小时并不是一个好主意——周围肯定有四分之一小时的时区。

使用毫秒作为偏移量可能是最灵活的,但我认为分钟更容易阅读。如果您要查看数据库中的“原始”数据,则更容易理解值 60 = 1 小时而不是 3600000。我无法想象您真的需要几分之一分钟作为偏移量。

于 2008-10-12T15:42:16.350 回答
4

将所有 DateTimeOffset 标准化为一个公共偏移量,最好是 UTC。然后像往常一样存储 DateTime 。提取后恢复偏移量,它应该是一个常数。这不会保留原始偏移量,但无论如何偏移量对于时区来说都是模棱两可的。

如果您确实需要知道日期/时间的来源,那么您需要存储一些时区信息。这是因为一个简单的偏移量不能明确表示时间的起源。请参阅(有些令人困惑的)关于在 DateTime、DateTimeOffset 和 TimeZoneInfo 之间选择的 MSDN 文档。

于 2008-10-14T22:44:46.697 回答
1

将日期时间存储为日期时间,将偏移量存储为毫秒(bigint)

于 2008-10-12T15:36:34.693 回答