2013-08-23 158 views
0

我一直在使用oracle數據庫很長一段時間,並一直存儲日期而不打擾時區。 但是現在我們遇到了一個問題,客戶端和服務器處於不同的時區,我們需要根據時區執行日期/時間轉換。這已經打開了很多問題:存儲日期與時區

  1. 我們應該總是存儲日期/時間以及它的時區嗎? 我這樣問,因爲如果servertimezone更改,那麼我的數據將被破壞。

  2. 如果oracle數據庫服務器位於特定區域,那麼它應該總是在本地時區運行?這有什麼標準嗎?

我的第二點是關於位於不同地區但與prod數據庫具有相同數據的災難恢復數據庫服務器。如果兩個數據庫的時區不相同,那麼我們遇到了麻煩。

回答

1

爲了能夠在他們的時區顯示客戶的日期,你需要一些抵消。例如, ,您的服務器運行在美國東部時間,您可以節省多年的時間。所有的數據都是以這種方式保存的。所以,你需要創建一個字段,爲每個用戶存儲偏移量。然後,您需要將此偏移量應用於select上的每個日期/時間字段。你如何做到這一點,我不知道 - 因爲我不知道你如何使用你的數據。它只是一個選擇聲明,報告或網站?但如果這是一個應用程序,客戶端將加載包括偏移量的用戶信息。例如,美國東部時間的用戶在你的情況下將有0的偏移量。然後,從db請求的任何日期/時間字段應該應用偏移值。當然,由於您的應用程序不是從一開始就爲此設計的,因此可能需要付出一些努力。