我在同一臺服務器上有許多數據庫,代表每個時區(太平洋,山區,中部和東部)的不同時區。現在我的程序使用諸如'NOW'
和CURRENT_TIMESTAMP
之類的東西來獲取記錄的當前時間。這是個問題。每Firebird數據庫修改CURRENT_TIMESTAMP
使用SymmetricDS將數據從單獨的計算機同步到此中央服務器。但是,我遇到的問題是,在此中央服務器上運行的程序被寫入,就好像它們在辦公室本地一樣。這意味着當它調用時間戳時,它會在服務器的可能不代表他們辦公室的時區執行。結果導致某些數據連續性混亂。
除了通過程序並重寫每一種利用當前時間的情況之外,我們更願意找到一種方法來在每個數據庫中以不同的方式表示時間......不知何故分別在每個數據庫中抵消時區。
儘管我已經完成了大量的閱讀,但我可以找到與此主題相關的內容,我有什麼選擇?
如果你知道時區,你可以將它存儲在數據庫中,並可以使用'dateadd(hour,-cast(:tz_hour as integer),current_timestamp);' –
困境是我們想要改變所有的時間Firebird中的相關函數和上下文變量爲我們做到了這一點。我們擁有龐大的代碼體系,並且在任何地方替換它都會花費大量時間:\ – user2085722
不幸的是,除了可能使您的服務器以UTC運行外,沒有實際的選擇,因此所有系統至少使用相同的日期(但是如果客戶在當地時區插入時間或時間戳,仍然可能造成嚴重破壞)。 –