建議改參考 PHP MySQL 修正主機時區
原文(source): Amazon EC2 – PHP與MySQL時間區域(Timezone)的調整 | YouMeb官方部落格
近日於Amazon EC2上開發網路應用程式時遇到Timezone的問題,因為開發規格上要用今天、過去一週、過去一個月、或是不限時間等時間範圍來過濾陳列於頁面上的作品,所以伺服端的SQL就需要對時間做些處理,但是不知為何,總是無法正確的將某些時間範圍內的作品SQL出來,查了一下發現是疏忽了LAMP的時區設定
整個環節要正常運作必須修改以下的設定
php.ini – 如果在Insert / Update資料庫時,有使用PHP的日期與時間函數來產生MySQL DATETIME型態資料欄位的資料時,必須確保Time Zone的正確性
[Date]
date.timezone ="Asia/Taipei"
MySQL
MySQL啟動時會先讀取主機的時區設定,然後 利用主機的時區來設定MySQL Server的system_time_zone系統變數可以於啟動MySQL Server時設定系統時域
/{path to mysqld}/mysqld --timezone='Asia/Taipei'
於啟動MySQL時進行全域的時區設定
/{path to mysqld}/mysqld --default-time-zone='Asia/Taipei'
於MySQLy的執行期間時進行全域的時域設定
mysql > SET GLOBAL time_zone = 'Asia/Taipei';
Per- Connection Timezone,官方文件原文稱為Currennt session timezone,每一次的客戶端資料庫連線可以有自己的時域設定,沒有指定的話預設會讀取全域的時區設定
mysql > SET time_zone = 'Asia/Taipei'; or
mysql > SET SESSION time_zone = 'Asia/Taipei';
查詢目前時域設定
SELECT @ @global.time_zone , @ @session.time_zone