正如在標題中所述,由於PHP date
函數和MySQL NOW()
函數的存在,我發現了一個問題(這是一個非常嚴重的問題)。恢復PHP和MySQL之間的時間戳差異
這是問題,在MySQL表我有一個名爲aggiornamento
列,並命名爲idesterno
外部ID列,其工作原理是這樣的:
- 在插入時,它會通過MySQL的
CURRENT_TIMESTAMP
插入,和在idesterno
被插入過 - 在更新,它會檢查使用PHP的
date
功能idesterno
和更新aggiornamento
這裏的BIG問題(相信我,這真的是一個大問題):
的MySQL NOW()
和CURRENT_TIMESTAMP
返回正確的時間,2016-09-04 13:20:00
,但PHP返回正確的太)另一個日期,這是2016-09-04 11:20:00
所以,當我在數據庫中插入新記錄時,一切順利,正如我期望的那樣,但是,當他更新時,會出現問題。
我發現區別在於時區,MySQL有我的(CEST
),PHP不支持,即使它們位於同一臺服務器上(是的,非常有趣),使用date_default_timezone_get
進行檢查。
所以,最後,我需要知道的是:
我知道哪一個已被更新,但我不知道CURRENT_TIMESTAMP
和date('Y-m-d H:i:s)
之間確切的時間差。
我想這大概需要1或2小時(基於夏令時/冬令時),但我不能不知道我是否正確地做了這件事
P.S.表格條目正在由每隔5分鐘運行的CRON更新
您是否嘗試過在php.ini中設置date.timezone(http://php.net/manual/fr/datetime.configuration.php#ini.date.timezone)? – vincenth
@vincenth我需要用正確的時間戳替換數據庫'aggiornamento'列,由於MySQL和PHP之間的時區不同,這實際上是錯誤的。我已經設置了PHP時區,但問題是糾正較舊的記錄,而不是現在保存的記錄。謝謝你的方式 – CapitanFindus