2008-10-12 74 views
5

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

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

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

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

+0

相关问题 - http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices – Oded 2010-07-23 20:20:05

回答

7

这不是一个好主意,假设偏移是几个小时或半小时 - 当然也有围绕一刻钟时区。

使用毫秒为偏移量可能是最灵活的,但我认为分钟是更容易阅读。如果你打算查看数据库中的“原始”数据,那么理解60分钟= 1小时比3600000更容易。我无法想象你真的需要几分钟的时间作为抵消。

1

店日期时间为datetime和偏移量为毫秒(BIGINT)

4

将所有DateTimeOffset标准化为一个通用偏移量,最好是UTC。然后像往常一样存储DateTime。提取后恢复偏移量,这应该是一个常数。这不会保留始发偏移量,但偏移量对时区无疑是不明确的。

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

+0

同意 - 商店日期为UTC,只担心时区和DST抵消的时刻呈现给用户。 – 2008-10-14 22:53:27

相关问题