我剛剛接管了以前開發人員開發新系統的工作,說實話這是一團糟。在數據庫中超時1小時
所有日記項都提前1小時,它們保存的格式是1355385600.負責時間的字段是start_time和end_time。
我需要一種方法來批量更新數據庫中的所有條目並從中刪除一小時。
你們有什麼想法我可以做到這一點?
乾杯
注:我應該提到的是,默認的時區設置正確,以「歐洲/倫敦」,當你添加一個新的日記的時間是正確的。我需要做的是找到一種方法來批量更新數據庫中的所有當前條目以恢復1小時。這可能嗎?
我剛剛接管了以前開發人員開發新系統的工作,說實話這是一團糟。在數據庫中超時1小時
所有日記項都提前1小時,它們保存的格式是1355385600.負責時間的字段是start_time和end_time。
我需要一種方法來批量更新數據庫中的所有條目並從中刪除一小時。
你們有什麼想法我可以做到這一點?
乾杯
注:我應該提到的是,默認的時區設置正確,以「歐洲/倫敦」,當你添加一個新的日記的時間是正確的。我需要做的是找到一種方法來批量更新數據庫中的所有當前條目以恢復1小時。這可能嗎?
您需要設置時區。
對於我的網站,我設置了date_default_timezone_set('Europe/Berlin')
的時區,當我在數據庫中插入日期時間時,我使用date('Y/m/d H:i:s')
。
對於你的,而不是date('Y/m/d H:i:s')
,它應該是strtotime(date('Y/m/d H:i:s'))
我忘了說,該應用程序是在CodeIgniter中構建的。如果我設置時區,它不會影響當前的數據庫條目嗎? – 2013-04-20 11:25:18
看起來像默認時區設置正確。 – 2013-04-20 11:56:13
不,它不會。您必須手動編輯它們,或者使用'mktime()'來更新它們。 – 2013-04-20 12:27:11
只要更新您的領域,並添加1小時
UPDATE
yourtable
SET
start_time = start_time - 3600,
end_time = end_time - 3600
WHERE
start_time <= max time prior timezone fix
編輯:當然意味着
。減去
你檢查時區?它是否設置正確? – 2013-04-20 10:51:23
設置正確,使用<?php echo date_default_timezone_get(); ?>來檢查。它將設置到歐洲/倫敦。 – 2013-04-20 11:56:55