1. 程式人生 > >MYSQL-datatime和timestamp的區別

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最大的區別。
--------------------- 

https://blog.csdn.net/u014696474/article/details/70568733