Mysql的時間類型

mysql中有多種數據類型可以用於時間和日期的表示,不同的版本可能由不同的地方,下面這張圖表示mysql5.0中所支持的日期和時間類型。

日期和時間類型

如果要用來表示年月日的話,那麼通常用date來表示;

如果要用來表示年月日時分秒,通常用datetime來表示;

如果用來表示時分秒,通常用time來表示;

如果需要插入的時間為系統時間的話,通常使用timestamp來表示(timestamp值返回后顯示為"yyyy-mm-dd hh:mm:ss"格式的字元串,顯示寬度為19個字元,如果想要獲得數字值,需要在timestamp列添加「+0」 :select ts+'0' from ts;獲得的值為20170625185917);

Advertisements

如果只是表示年份,可以用year來表示,它比date佔用更少的空間。year有2位或4位格式的年,默認是4位格式。4位格式的時候允許的值是1901--2155。在2位格式中,允許的值是70--69,表示從1970--2069年(貌似兩位的從5.5.27之後就不支持兩位了)

表中的最小值和最大值代表著有效範圍,如果超過了這個範圍,系統會進行報錯並以零值存儲。下面用sql語句看下date、time、datetime三種類型的結果:

建表

插入當前時間

查詢結果

從結果可以看到,datetime是date和time的結合體,用戶可以根據不同的需求,來選擇不同的日期或者時間類型。下面看下timestamp的示例:

Advertisements

欄位為timestamp

從表結構可以看到,系統默認為欄位類型為timestamp創建了默認值CURRENT_TIMESTAMP(系統的當前時間),我們來插入一個null值試試會不會自動給我們插入時間呢?

自動獲取時間

可以從結果看到已經插入了系統時間。但是設置timestamp的時候需要注意,mysql只會給第一個欄位類型為timestamp的設置系統日期,如果再設置第二個timestamp的話,那麼系統默認插入的時間為0.

插入第二個timestamp

當然可能大家會看到我們在添加第二個的時候並沒有設置默認值。因為在mysql中只能由一列的默認值為timestamp,如果想要修改多列為系統時間默認值的話,那麼就會報錯。

修改第二個默認值報錯

今天就到這裡~~未完待續~~~

Advertisements

你可能會喜歡