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