MySQL datetime 和 timestamp 的區別 MySQL中有關TIMESTAMP和DATETIME的總結

【轉載】:MySQL中有關TIMESTAMP和DATETIME的總結html

1. datetime 和 timestamp 的相同點

  二者均可以用來表示YYYY-MM-DD HH:MM:SS[.fraction]類型的日期。post

2. datetime 和 timestamp 的不一樣點

2.1 存儲方式

  對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化爲UTC(世界標準時間)進行存儲。查詢時,將其又轉化爲客戶端當前時區進行返回。測試

  而對於DATETIME,不作任何改變,基本上是原樣輸入和輸出。url

2.2 存儲範圍

  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

3. datetime 和 timestamp 的自動初始化和自動更新

  默認狀況下,數據表會對第一個 timestamp 字段設置爲 not null,並在記錄更新時自動更新該字段的值爲當前時間;get

  測試:it

  

3.1 設置自動初始化和更新

  查看是否開啓自動初始化和更新:io

  show variables like '%explicit_defaults_for_timestamp%';

  

  禁用自動初始化和更新:

  1. 將「explicit_defaults_for_timestamp」的值設置爲ON。

  2. 「explicit_defaults_for_timestamp」的值依舊是OFF,也有兩種方法能夠禁用

       1> 用DEFAULT子句該該列指定一個默認值

       2> 爲該列指定NULL屬性。

相關文章
相關標籤/搜索