【轉載】:MySQL中有關TIMESTAMP和DATETIME的總結html
二者均可以用來表示YYYY-MM-DD HH:MM:SS[.fraction]類型的日期。post
對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化爲UTC(世界標準時間)進行存儲。查詢時,將其又轉化爲客戶端當前時區進行返回。測試
而對於DATETIME,不作任何改變,基本上是原樣輸入和輸出。url
timestamp所能存儲的時間範圍爲:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。htm
datetime所能存儲的時間範圍爲:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。blog
總結:TIMESTAMP和DATETIME除了存儲範圍和存儲方式不同,沒有太大區別。固然,對於跨時區的業務,TIMESTAMP更爲合適。ci
默認狀況下,數據表會對第一個 timestamp 字段設置爲 not null,並在記錄更新時自動更新該字段的值爲當前時間;get
測試:it
查看是否開啓自動初始化和更新:io
show variables like '%explicit_defaults_for_timestamp%';
禁用自動初始化和更新:
1. 將「explicit_defaults_for_timestamp」的值設置爲ON。
2. 「explicit_defaults_for_timestamp」的值依舊是OFF,也有兩種方法能夠禁用
1> 用DEFAULT子句該該列指定一個默認值
2> 爲該列指定NULL屬性。