4 月 262011
 

建議改參考 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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

CAPTCHA Image
Play CAPTCHA Audio
Reload Image