2010-07-13 74 views
2

當我執行NOW()的查詢時,mysql返回的時間與服務器上當前時間相差大約-30秒。有任何想法嗎?我試着查看配置文件,什麼都沒發現。我運行版本5.1.37MYSQL NOW()落後30秒

SELECT NOW() 

回答

5

服務器和你在哪裏得到的日期幾乎可以肯定有閏秒存在不同看法的情況下的時區上下文。我懷疑差異將是24s而不是30s。

您可以在獲取日期時通過調整時區來測試。在各種Unix上,你可以在時區上使用「right /」前綴來調整閏秒並查看改變情況的方式。

爲了解決這個問題,你需要確保服務器與正確設置時區環境變量運行。

更新:

錯過了「windows」標籤。 Windows時間定義爲UTC而不是TAI,因此包含閏秒。如果差異確實是24s,那麼你需要檢查mysql是否沒有像Windows那樣應用閏秒調整。

2

你肯定用不了30秒,您運行腳本,然後檢查服務器上的時間?

NOW()返回一個常數時間 點指出了 語句開始執行的時間。

您需要根據查詢初始化未完成的情況進行比較。

如果您需要時間,請致電SYSDATE()代替。

如果這一切是好的,你還有一個問題,你肯定只是用SELECT NOW()?如果你在查詢的某個地方添加了一個字段,它可能實際上將添加到NOW()列而不是您認爲的那個列。

如果這一切仍然是檢查出,我認爲這可能支付撇去Server Timezone Support MySQL的文章。也許閏秒被忽略或東西..

您重新啓動MySQL服務器,以防萬一調整服務器的時間,因爲服務器開始了嗎?

+0

查詢需要0.0004秒,因此它不像查詢提交時間和返回時間之間存在巨大差異。注意SYSDATE()與服務器的時間差約30秒。 編輯:電話正是「SELECT NOW()」 – 2010-07-13 04:10:30

+0

@Slava,好的,你有沒有嘗試重新啓動mysql服務器? – 2010-07-13 04:31:48