MySQL的5種時間類型的比較

img

日期時間類型 佔用空間 日期格式 最小值 最大值 零值表示
DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00
TIMESTAMP 4 bytes YYYY-MM-DD HH:MM:SS 19700101080001 2038 年的某個時刻 00000000000000
DATE 4 bytes YYYY-MM-DD 1000-01-01 9999-12-31 0000-00-00
TIME 3 bytes HH:MM:SS -838:59:59 838:59:59 00:00:00
YEAR 1 bytes YYYY 1901 2155 0000

DATETIMEsql

DATETIME 用於表示 年月日 時分秒,是 DATE 和 TIME 的組合,而且記錄的年份(見上表)比較長久。若是實際應用中有這樣的需求,就可使用 DATETIME 類型。

一、DATETIME列能夠設置爲多個,默承認爲null,能夠手動設置其值。 二、DATETIME列不可設定默認值。 三、DATETIME列能夠變相的設定默認值,好比經過觸發器、或者在插入數據時候,將DATETIME字段值設置爲now(),這樣能夠作到了,尤爲是後者,在程序開發中經常用到。服務器

TIMESTAMPspa

  • TIMESTAMP 用於表示 年月日 時分秒,可是記錄的年份(見上表)比較短暫,TIMESTAMP列必須有默認值,默認值能夠爲「0000-00-00 00:00:00」,但不能爲null。
  • TIMESTAMP 和時區相關,更能反映當前時間。當插入日期時,會先轉換爲本地時區後再存放;當查詢日期時,會將日期轉換爲本地時區後再顯示。因此不一樣時區的人看到的同一時間是 不同的。
  • 表中的第一個 TIMESTAMP 列自動設置爲系統時間(CURRENT_TIMESTAMP)。當插入或更新一行,但沒有明確給 TIMESTAMP 列賦值,也會自動設置爲當前系統時間。若是表中有第二個 TIMESTAMP 列,則默認值設置爲0000-00-00 00:00:00。
  • TIMESTAMP 的屬性受 Mysql 版本和服務器 SQLMode 的影響較大。

    若是記錄的日期須要讓不一樣時區的人使用,最好使用 TIMESTAMP。code

注:通常建表時候,建立時間用datetime,更新時間用timestamp。blog

DATE開發

DATE 用於表示 年月日,若是實際應用值須要保存 年月日 就可使用 DATE。

TIMErem

TIME 用於表示 時分秒,若是實際應用值須要保存 時分秒 就可使用 TIME。

YEARget

YEAR 用於表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默認是4位。若是實際應用只保存年份,那麼用 1 bytes 保存 YEAR 類型徹底能夠。不但可以節約存儲空間,還能提升表的操做效率。
本文由博客一文多發平臺 OpenWrite 發佈!
相關文章
相關標籤/搜索