2015-11-03 105 views
-1

我試圖消除源自時區問題的錯誤,並且無法使convert_tz()正常工作。我懷疑它可能只是一個語法錯誤。如何在mysql查詢中正確使用convert_tz()

SUM(IF(duration IS NULL, UNIX_TIMESTAMP() - UNIX_TIMESTAMP(convert_tz(t.start_time,'$instanceTimezone','$serverTimezone')), duration)) as `dailyTime`, 

我試圖設置持續時間爲現在 - t.start_time當查詢運行。

不幸的是,這個數據庫中的時間並沒有以標準化的方式存儲,所以我必須從實例時區轉換到服務器時間進行計算。服務器時間應該始終使用UTC,但爲了以防萬一,我將它留在了一些變量中。

我有加載的MySQL時區,並設置我的本地測試實例使用UTC時間。

當像這樣使用它時,我沒有收到任何錯誤。但是在整個過程中它總是返回0。

+0

這是PHP嗎? – tadman

+0

是的,這是用PHP編寫的。我原本有這個標籤,但有人編輯它。我猜是因爲這個問題本身並不直接與PHP相關。 – MrOrange

+0

您可以包含t.start_time,列數據類型和表達式的示例數據,就像它提交給數據庫一樣(使用$ variables擴展)? – JRD

回答

0

這裏的問題與我加載到mysql的時區表有關。

我從OSX加載它們,UTC的名稱是Etc/UTC。更改我的本地mysql時區表以匹配UTC的服務器值修復了問題。