我昨晚花了8個多小時來檢查所有的文檔,瀏覽各種帖子等,我幾乎解決了我的問題,但仍然有一些遺漏,我不明白。使用unix時間,php,mysql的時區問題
我有一個表,它存儲了各種用戶提交的unix時間戳(例如1351867293)。我正在提取這些信息並對它進行計算,以便獲得「今天」,「昨天」,「本週」等提交內容的總數。
我使用的代碼(「今日提交」)是:
WHERE DATE(from_unixtime(comment_date)) = CURRENT_DATE";
到目前爲止好,但有一個時間偏移和不正確顯示的數據。這裏的用戶在stackoverflow建議使用CONVERT_TZ爲了得到固定的偏移量。
這裏是我卡住的地方。我位於CST時區,我的服務器似乎位於EST時區。所以我用這個代碼
WHERE DATE(CONVERT_TZ(from_unixtime(comment_date), 'EST', 'CST')) = CURRENT_DATE";
...但它顯示我只有「0」,因此,儘管我今天提交了意見。我嘗試了不同的時區,但他們都給我「0」作爲結果。例如:當我用數字替換EST和CST時,例如:
WHERE DATE(CONVERT_TZ(from_unixtime(comment_date), '+00:00', '+07:00')) = CURRENT_DATE";
...我得到一個數字輸出,但數字並不正確。我嘗試了很多組合,包括+08:00,-05:00,但似乎沒有任何工作。
基本上我所要求的是爲了得到正確的結果,我必須將這兩個數字放在哪些值中?我的網站上的其他一切工作和正確顯示在我的時區(CST),我只有這個查詢的問題。
我的服務器的IP是50.116.13.130如果有幫助。
我的問題是,我有這行**在60多個文件中的WHERE DATE(CONVERT_TZ(from_unixtime(comment_date),'$ timezone1','$ timezone2'))= CURRENT_DATE「; ** _ $ timezone1_和_ $ timezone2_是通過header.php解析的 - 所以我必須使用數字值。我早些時候嘗試過你的方法,但它弄亂了我網站的其他日期時間顯示 - 我使用的後端正常地轉換時區,唯一的我有這個自定義代碼的統計數據 - 這是唯一弄亂時區 –
好的,我明白了。但是,如果你在DATE(CONVERT_TZ(from_unixtime(comment_date),'EST','CST')選擇語句。 ),它會給你所期望的嗎? – luttkens
nope,由於某些原因,我不能使用「EST」或「CST」,唯一的工作是數值如「+05:00」或「-06:00」 。 –