MySQL DATETIME 欄位中不明確的夏令時
MySQL DATETIME 欄位在夏令時 (DST) 轉換期間出現了難題。考慮發生「回退」轉換的場景,導致一小時增益和兩次不同的凌晨 1:30 出現:1:30am -04:00 和 1:30am -05:00。出現這種歧義是因為 DATETIME 欄位不像 TIMESTAMP 欄位那樣明確地儲存偏移資訊。
挑戰與解決方案
這個難題凸顯了在中儲存特定時間資料的挑戰遵守 DST 的時區。 DATETIME 和 TIMESTAMP 欄位都無法在此類轉換期間準確保留指定時間。但是,存在一個解決方案,涉及在自訂腳本中明智地使用 DATETIME 欄位和偏移量轉換。
DATETIME 欄位和偏移轉換
DATETIME 欄位允許儲存任何時區的數據,包括非 DST 時區。透過在將資料儲存到 DATETIME 欄位之前將資料從系統的 DST 時區轉換為非 DST 時區(例如 UTC),可以解決歧義。轉換邏輯可以用與資料庫互動的腳本語言來實現。
檢索和解釋
從資料庫檢索資料時,必須執行相同的轉換過程在 MySQL 之外應用以確保準確的解釋。 PHP 中的 strtotime() 或 DateTime 類別等函數可用於將資料解釋為 UTC 時間,並避免與 -04:00 和 -05:00 偏移相關的歧義。
結論
雖然MySQL 的日期/時間數學函數可能無法處理DST 觀察時區內的DST 轉換, DATETIME 欄位和MySQL 外部明確偏移量轉換的組合提供了可靠的解決方案。即使在夏令時轉換期間,這種方法也能確保準確儲存和檢索特定時間的資料。
以上是如何處理 MySQL DATETIME 欄位中的夏令時歧義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!