在MySQL 中使用夏令時處理不明確的日期時間
當發生夏令時(DST) 時,會出現一個不明確的時間,這很困難以確定預期的時間參考。例如,在美國/紐約時區,秋季過渡期間凌晨 1:30 可能出現兩次。
問題:
MySQL 的 DATETIME 和 TIMESTAMP 字段呈現唯一的在處理這些模棱兩可的時期時面臨著挑戰。 DATETIME 欄位以原樣儲存日期和時間,不考慮時區或 DST 轉換。 TIMESTAMP 欄位將輸入時間戳轉換為 UTC,反之亦然。
解決方案:
1.使用DATETIME 欄位:
將時間戳轉換為UTC,然後儲存在DATETIME 欄位中。這可確保您可以控制要保存的準確 UTC 時間。
2.擷取資料的解釋:
將從 DATETIME 欄位擷取的時間戳記解釋為 MySQL 外部的 UTC 時間戳記。這可以防止 MySQL 的日期/時間函數引入歧義。
3.避免使用 TIMESTAMP 字段:
避免使用 TIMESTAMP 字段,因為在涉及 DST 時,它們可能會導致本地時間和 UTC 之間的轉換不一致。
實作:
檢索中資料:
// Example using PHP's DateTime class $timestamp = strtotime($db_timestamp . ' UTC');
儲存資料:
// Example using PHP's DateTime class $UTCDateTime = new DateTime('2009-11-01 1:30:00 EST'); $db_timestamp = $UTCDateTime->format('Y-m-d H:i:s');
注意事項:
以上是MySQL 如何處理夏令時轉換期間不明確的日期時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!