2010-05-18 46 views
3

何時使用TIMESTAMP w/timezone而不是TIMESTAMP w /本地時區?帶有時區數據類型混淆的Oracle TIMESTAMP

當數據存儲在數據類型TIMESTAMP w/local tz的列中時,數據標準化爲數據庫時區,並且時區位移不作爲列數據的一部分存儲。當用戶檢索數據時,Oracle將其返回到用戶的本地會話時區。

沒有那麼多有用嗎?我想不出爲什麼我想使用TIMESTAMP w/timezone並得到一些具有UTC偏移量的gobble gook。

回答

2

有時候可能很重要的是要知道在本地時區的上下文中發生了什麼事件 - 而不是等待查詢它的人的時間。

假設的例子:醫療應用記錄一個人的睡眠模式。你可能會更加關注他們什麼時候睡覺,在他們的時區,而不是他們什麼時候睡覺,因爲你自己的當地時區;此外,您還可以確定當時的時區,以便您瞭解當時是否在時區之間旅行,並且可能遭遇時差。

1

由於以下原因,數據庫規範化可能並不準確: 1.規範化TIMESTAMP w /本地時區時,數據庫依賴於客戶端提供的時區(即會話時區)。由於系統時區未設置等原因,會話時區可能不準確。 2.如果客戶端提供了時區名稱(而不是時區偏移量),數據庫需要檢索相應的時區偏移量。它使用系統表自動執行。現在想想DST。如果夏令時轉換日期頻繁更改,則數據庫系統表中的數據可能不準確。您需要跟蹤這些更改並立即獲取/應用數據庫補丁(這可能無法實現),因此數據庫可以更新其系統表以反映時區偏移量。