天天看點

MySQL的datetime V.S timestamp顯示範圍儲存時區影響

顯示

TIMESTAMP列的顯示格式與DATETIME列相同。

即顯示寬度都固定在19字元,格式為:

YYYY-MM-DD HH:MM:SS
      

範圍

  • datetime 以

    YYYY-MM-DD HH:MM:SS

    格式檢索和顯示DATETIME值。支援的範圍為

    1000-01-01 00:00:00

    9999-12-31 23:59:59

  • TIMESTAMP值不能早于1970或晚于2037

儲存

TIMESTAMP

  • 4個位元組儲存
  • 值以UTC格式儲存
  • 時區轉化 ,存儲時對目前的時區進行轉換,檢索時再轉換回目前的時區

datetime

  • 8個位元組儲存
  • 實際格式儲存
  • 與時區無關

時區影響

  1. 先插入一個資料insert into

    t8

    values(now(), now());
  2. 改變用戶端時區(東9區,日本時區)。
  3. 再次顯示插入的資料,變化了,timestamp類型的資料 增加了 1個小時

timestamp

timestamp 預設允許為 “非空”(not null by default), 如果你在定義“ts TIMESTAMP DEFAULT NULL” 是非法的。 可以指定為空 null ,“ts TIMESTAMP NULL" ,這時可以在添加語句改變預設值。

ts2 TIMESTAMP NULL DEFAULT 0,
ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP 
      

default (一個表中隻能有一個列選擇下面其中一種)

default CURRENT_TIMESTAMP 
default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
ON UPDATE CURRENT_TIMESTAMP 
ON UPDATE 見上2