問題 1:夏令時考慮
是的,你是對的。透過指定時區名稱(例如“美國/東部”),CONVERT_TZ() 會考慮夏令時。呼叫 CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') 會在一月返回 '19:00:00',從而識別出東部時間比 UTC 晚 5 小時。在夏令時期間,結果將為“20:00:00”,因為東部時間提前一小時。
問題 2:時區表更新
如果您只依賴時區名稱,不需要不斷更新時區表來保持偏移量最新。 CONVERT_TZ() 考慮當前時區設定和夏令時規則。
問題3:對NULL 回傳進行故障排除
範例查詢中的NULL 回傳(CONVERT_TZ(' 2004-01-01 12:00:00',' GMT','MET')) 確實可能是由於缺少時區表造成的。要驗證這一點,請執行下列查詢:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
如果也傳回 NULL,則表示時區表尚未正確設定。
其他提示
您可以使用MySQL中的INTERVAL關鍵字來處理時間計算,而不是直接加法或減去時間。例如,您可以使用以下命令減去一天並添加四小時:
now() - interval 1 day + interval 4 hour
以上是MySQL 的 CONVERT_TZ() 函式如何處理時區與夏令時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!