2008-10-12 76 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

相關問題