TIME 類型
TIME 類型用於只須要時間信息的值,在存儲時須要 3 個字節。格式爲 HH:MM:SS。HH 表示小時,MM 表示分鐘,SS 表示秒。
TIME 類型的取值範圍爲 -838:59:59~838:59:59,小時部分如此大的緣由是 TIME 類型不只能夠用於表示一天的時間(必須小於 24 小時),還多是某個事件過去的時間或兩個事件之間的時間間隔(可大於 24 小時,或者甚至爲負)。
可使用各類格式指定 TIME 值,以下所示。sql
- 'D HH:MM:SS' 格式的字符串。還可使用這些「非嚴格」的語法:'HH:MM:SS'、'HH:MM'、'D HH' 或 'SS'。這裏的 D 表示日,能夠取 0~34 之間的值。在插入數據庫時,D 被轉換爲小時保存,格式爲 「D*24+HH」。
- 'HHMMSS' 格式、沒有間隔符的字符串或者 HHMMSS 格式的數值,假定是有意義的時間。例如,'101112' 被理解爲'10:11:12',可是 '106112' 是不合法的(它有一個沒有意義的分鐘部分),在存儲時將變爲 00:00:00。
提示:爲 TIME 列分配簡寫值時應注意:若是沒有冒號,MySQL 解釋值時,假定最右邊的兩位表示秒。(MySQL 解釋 TIME 值爲過去的時間而不是當前的時間)。例如,讀者可能認爲 '1112' 和 1112 表示 11:12:00(即 11 點過 12 分鐘),但MySQL 將它們解釋爲 00:11:12(即 11 分 12 秒)。一樣 '12' 和 12 被解釋爲00:00:12。相反,TIME 值中若是使用冒號則確定被看做當天的時間,也就是說,'11:12' 表示 11:12:00,而不是 00:11:12。數據庫
DATE 類型
DATE 類型用於僅須要日期值時,沒有時間部分,在存儲時須要 3 個字節。日期格式爲 'YYYY-MM-DD',其中 YYYY 表示年,MM 表示月,DD 表示日。
在給 DATE 類型的字段賦值時,可使用字符串類型或者數字類型的數據插入,只要符合 DATE 的日期格式便可。以下所示:url
- 以 'YYYY-MM-DD' 或者 'YYYYMMDD' 字符中格式表示的日期,取值範圍爲 '1000-01-01'~'9999-12-3'。例如,輸入 '2015-12-31' 或者 '20151231',插入數據庫的日期爲2015-12-31。
- 以 'YY-MM-DD' 或者 'YYMMDD' 字符串格式表示日期,在這裏YY表示兩位的年值。MySQL 解釋兩位年值的規則:'00~69' 範圍的年值轉換爲 '2000~2069','70~99' 範圍的年值轉換爲 '1970~1999'。例如,輸入 '15-12-31',插入數據庫的日期爲 2015-12-31;輸入 '991231',插入數據庫的日期爲 1999-12-31。
- 以 YYMMDD 數字格式表示的日期,與前面類似,00~69 範圍的年值轉換爲 2000~2069,80~99 範圍的年值轉換爲 1980~1999。例如,輸入 151231,插入數據庫的日期爲 2015-12-31,輸入 991231,插入數據庫的日期爲 1999-12-31。
- 使用 CURRENT_DATE 或者 NOW(),插入當前系統日期。
提示:MySQL 容許「不嚴格」語法:任何標點符號均可以用做日期部分之間的間隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等價的,這些值也能夠正確地插入數據庫。spa
DATETIME 類型
插入:insert into t3 values('2013-01-5-14 20:24:05');
DATETIME 類型用於須要同時包含日期和時間信息的值,在存儲時須要 8 個字節。日期格式爲 'YYYY-MM-DD HH:MM:SS',其中 YYYY 表示年,MM 表示月,DD 表示日,HH 表示小時,MM 表示分鐘,SS 表示秒。
在給 DATETIME 類型的字段賦值時,可使用字符串類型或者數字類型的數據插入,只要符合 DATETIME 的日期格式便可,以下所示。.net
- 以 'YYYY-MM-DD HH:MM:SS' 或者 'YYYYMMDDHHMMSS' 字符串格式表示的日期,取值範圍爲 '1000-01-01 00:00:00'~'9999-12-3 23:59:59'。例如,輸入 '2014-12-31 05:05:05' 或者 '20141231050505’,插入數據庫的 DATETIME 值都爲 2014-12-31 05:05:05。
- 以 'YY-MM-DD HH:MM:SS' 或者 'YYMMDDHHMMSS' 字符串格式表示的日期,在這裏 YY 表示兩位的年值。與前面相同,'00~79' 範圍的年值轉換爲 '2000~2079','80~99' 範圍的年值轉換爲 '1980~1999'。例如,輸入 '14-12-31 05:05:05',插入數據庫的 DATETIME 爲 2014-12-31 05:05:05;輸入 141231050505,插入數據庫的 DATETIME 爲 2014-12-31 05:05:05。
- 以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 數字格式表示的日期和時間。例如,輸入 20141231050505,插入數據庫的 DATETIME 爲 2014-12-31 05:05:05;輸入 140505050505,插入數據庫的 DATETIME 爲 2014-12-31 05:05:05。
提示:MySQL 容許「不嚴格」語法:任何標點符號均可用做日期部分或時間部分之間的間隔符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+35'、'98/12/31 11*30*45' 和 '98@12@31 11^30^45' 是等價的,這些值均可以正確地插入數據庫。3d
TIMESTAMP 類型
TIMESTAMP 的顯示格式與 DATETIME 相同,顯示寬度固定在 19 個字符,日期格式爲 YYYY-MM-DD HH:MM:SS,在存儲時須要 4 個字節。可是 TIMESTAMP 列的取值範圍小於 DATETIME 的取值範圍,爲 '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC。在插入數據時,要保證在合法的取值範圍內。orm
提示:協調世界時(英:Coordinated Universal Time,法:Temps Universel Coordonné)又稱爲世界統一時間、世界標準時間、國際協調時間。英文(CUT)和法文(TUC)的縮寫不一樣,做爲妥協,簡稱 UTC。cdn
TIMESTAMP 與 DATETIME 除了存儲字節和支持的範圍不一樣外,還有一個最大的區別是:對象
- DATETIME 在存儲日期數據時,按實際輸入的格式存儲,即輸入什麼就存儲什麼,與時區無關;
- 而 TIMESTAMP 值的存儲是以 UTC(世界標準時間)格式保存的,存儲時對當前時區進行轉換,檢索時再轉換回當前時區。即查詢時,根據當前時區的不一樣,顯示的時間值是不一樣的。
提示:若是爲一個 DATETIME 或 TIMESTAMP 對象分配一個 DATE 值,結果值的時間部分被設置爲 '00:00:00',所以 DATE 值未包含時間信息。若是爲一個 DATE 對象分配一個 DATETIME 或 TIMESTAMP 值,結果值的時間部分被刪除,所以DATE 值未包含時間信息。blog
Mysql中的DATE和DATETIME有什麼區別?
一、顯示格式的區別
Date顯示格式:YYYY-MM-DD;DateTime顯示格式:YYYY-MM-DD HH:mm:ss。
二、顯示範圍的區別
Date顯示範圍是1601-01-01 到 9999-01-01;DateTime顯示範圍是1601-01-01 00:00:00 到 9999-12-31 23:59:59。
三、應用場景的區別
當業務需求中只須要精確到天時,能夠用Date這個時間格式,當業務需求中須要精確到秒時,能夠用DateTime這個時間格式。
四、後臺取值的區別
Date後臺取值:@JSONField(format=」yyyy-MM-dd」);DateTime後臺取值:@JSONField(format=」yyyy-MM-dd HH:mm:ss:SSS」)(這裏只會精確到秒)。