MYSQL-datatime和timestamp的區別
mysql中有三種日期型別:
date(年-月-日)
create table test(hiredate date);
datetime(日期時間型別)
create table test(hiredate datetime)
timestamp(郵戳型別,儲存年-月-日 時-分-秒)
create table test(hiredate timestamp)
datetime 和timestamp的不同點
兩者的儲存方式不一樣
對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化為UTC(世界標準時間)進行儲存。查詢時,將其又轉化為客戶端當前時區進行返回。而對於DATETIME,不做任何改變,基本上是原樣輸入和輸出。
兩者所能儲存的時間範圍不一樣
timestamp所能儲存的時間範圍為:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。
datetime所能儲存的時間範圍為:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。
總結:TIMESTAMP和DATETIME除了儲存範圍和儲存方式不一樣,沒有太大區別。當然,對於跨時區的業務,TIMESTAMP更為合適。
自動初始化和更新
自動初始化指的是如果對該欄位(譬如上例中的hiredate欄位)沒有顯性賦值,則自動設定為當前系統時間。
自動更新指的是如果修改了其它欄位,則該欄位的值將自動更新為當前系統時間。
它與“explicit_defaults_for_timestamp”引數有關。
預設情況下,該引數的值為OFF
mysql> show variables like '%explicit_defaults_for_timestamp%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| explicit_defaults_for_timestamp | OFF |
+---------------------------------+-------+
row in set (0.00 sec)
總結:timestamp有自動初始化和更新,當你update某條記錄的時候,該列值會自動更新,這是和datatime最大的區別。
---------------------