DATETIME
DATETIME 用于表示 年月日 時(shí)分秒,是 DATE 和 TIME 的組合,并且記錄的年份(見上表)比較長久。 如果實(shí)際應(yīng)用中有這樣的需求,就可以使用 DATETIME 類型。
1、DATETIME列可以設(shè)置為多個(gè),默認(rèn)可為null,可以手動(dòng)設(shè)置其值。 2、DATETIME列不可設(shè)定默認(rèn)值。 3、DATETIME列可以變相的設(shè)定默認(rèn)值,比如通過觸發(fā)器、或者在插入數(shù)據(jù)時(shí)候,將DATETIME字段值設(shè)置為now(),這樣可以做到了,尤其是后者,在程序開發(fā)中常常用到。
TIMESTAMP
- TIMESTAMP 用于表示 年月日 時(shí)分秒,但是記錄的年份(見上表)比較短暫,TIMESTAMP列必須有默認(rèn)值,默認(rèn)值可以為“0000-00-00 00:00:00”,但不能為null。
- TIMESTAMP 和時(shí)區(qū)相關(guān),更能反映當(dāng)前時(shí)間。當(dāng)插入日期時(shí),會(huì)先轉(zhuǎn)換為本地時(shí)區(qū)后再存放;當(dāng)查詢?nèi)掌跁r(shí),會(huì)將日期轉(zhuǎn)換為本地時(shí)區(qū)后再顯示。所以不同時(shí)區(qū)的人看到的同一時(shí)間是 不一樣的。
- 表中的第一個(gè) TIMESTAMP 列自動(dòng)設(shè)置為系統(tǒng)時(shí)間(CURRENT_TIMESTAMP)。當(dāng)插入或更新一行,但沒有明確給 TIMESTAMP 列賦值,也會(huì)自動(dòng)設(shè)置為當(dāng)前系統(tǒng)時(shí)間。如果表中有第二個(gè) TIMESTAMP 列,則默認(rèn)值設(shè)置為0000-00-00 00:00:00。
- TIMESTAMP 的屬性受 MySQL 版本和服務(wù)器 SQLMode 的影響較大。如果記錄的日期需要讓不同時(shí)區(qū)的人使用,最好使用 TIMESTAMP。
注:一般建表時(shí)候,創(chuàng)建時(shí)間用datetime,更新時(shí)間用timestamp。
DATE
DATE 用于表示 年月日,如果實(shí)際應(yīng)用值需要保存 年月日 就可以使用 DATE。
TIME
TIME 用于表示 時(shí)分秒,如果實(shí)際應(yīng)用值需要保存 時(shí)分秒 就可以使用 TIME。
YEAR
YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默認(rèn)是4位。如果實(shí)際應(yīng)用只保存年份 ,那么用 1 bytes 保存 YEAR 類型完全可以。不但能夠節(jié)約存儲(chǔ)空間,還能提高表的操作效率。