首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

MySQL 時區調整:使用 DATE_ADD/DATE_SUB 與時間戳偏移

     編輯:PHP 綜合知識

前言

若無法修改 MySQL 伺服器時區設定,可在 SQL 查詢中以時差運算取得目標時區時間。本文說明使用 DATE_ADD、DATE_SUB 及 Unix 時間戳偏移的方法。

時區差值計算

假設伺服器預設為 MST (UTC-7),目標時區對應差值:

  • EST (UTC-5):+2 小時
  • PST (UTC-8):-1 小時
  • CST (UTC+8):+15 小時

日期時間欄位調整

-- 取得 EST 時間(比 MST 早 2 小時)
SELECT DATE_ADD(NOW(), INTERVAL 2 HOUR) AS est_time;

-- 取得 PST 時間(比 MST 晚 1 小時)
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR) AS pst_time;

-- 直接指定目標時區名稱(需載入時區表)
SELECT CONVERT_TZ(NOW(), 'MST', 'EST');

Unix 時間戳偏移

1 小時 = 3600 秒。以 EST (+2 hrs) 為例:

-- 取得 EST 的 Unix 時間戳
SELECT UNIX_TIMESTAMP() + (3600 * 2) AS est_timestamp;

-- 轉換為可讀日期時間
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP() + (3600 * 2)) AS est_datetime;

應用層處理策略

  1. 輸出端轉換:在所有顯示時間的地方,呼叫自訂函數加減時差。
  2. 輸入端轉換:寫入資料庫前,先將使用者時間轉為伺服器時區(或 UTC)。
  3. 兩者擇一:切勿雙向同時轉換,否則會產生雙重偏移。

總結

透過 SQL 內建日期函數或 Unix 時間戳運算,可在不動伺服器設定下彈性取得各時區時間。生產環境建議統一儲存 UTC,應用層負責呈現轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved