MySQL基礎教程:日期和時間類型
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL基礎教程:日期和時間類型,MySQL提供幾種時間和日期類型,包括日期和時間類型是DATETIME、DATE、TIMESTAMP、TIME和YEAR。對這幾種時間和日期類型概述如下:
DATA
取值范圍:“1000-01-01”到“9999-12-31”
存儲需求:3字節
TIME
取值范圍:“-838:59:59”到“838:59:59”
存儲需求:3字節
DATATIME
取值范圍:“1000-01-01 00:00:00”到“9999-12-31 23:59:59”
存儲需求:8字節
TIMESTAMP[(M)]
取值范圍:“19700101000000”到2037年的某個時刻
存儲需求:4字節
YEAR[(M)]
取值范圍:1901到2155
存儲需求:1字節
Y2K問題和日期類型
MySQL本身Y2K安全的,但是呈交給MySQL的輸入值可能不是。一個包含2位年份值的任何輸入是由二義性的,因為世紀是未知的。這樣的值必須被解釋成4位形式,因為MySQL內部使用4位存儲年份。
對于DATETIME, DATE, TIMESTAMP和YEAR類型,MySQL使用下列規則的解釋二義性的年份值:
在范圍00-69的年值被變換到2000-2069。
在范圍70-99的年值被變換到1970-1999。
記得這些規則僅僅提供對于你數據的含義的合理猜測。如果MySQL使用的啟發規則不產生正確的值,你應該提供無二義的包含4位年值的輸入。
DATETIME,DATE和TIMESTAMP類型
DATETIME, DATE和TIMESTAMP類型是相關的。本節描述他們的特征,他們是如何類似的而又不同的。
DATETIME類型用在你需要同時包含日期和時間信息的值時。MySQL檢索并且以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”意味著盡管更早的值可能工作,但不能保證他們可以。)
DATE類型用在你僅需要日期值時,沒有時間部分。MySQL檢索并且以'YYYY-MM-DD'格式顯示DATE值,支持的范圍是'1000-01-01'到'9999-12-31'。
TIMESTAMP列類型提供一種類型,你可以使用它自動地用當前的日期和時間標記INSERT或UPDATE的操作。如果你有多個TIMESTAMP列,只有第一個自動更新。TIMESTAMP值可以從1970的某時的開始一直到2037年,精度為一秒,其值作為數字顯示。
自動更新第一個TIMESTAMP列在下列任何條件下發生:
列沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。
列沒有明確地在一個UPDATE語句中指定且一些另外的列改變值。(注意一個UPDATE設置一個列為它已經有的值,這將不引起TIMESTAMP列被更新,因為如果你設置一個列為它當前的值,MySQL為了效率而忽略更改。)
你明確地設定TIMESTAMP列為NULL.
例如,我們創建一個表:
CREATE TABLE my_test
(
id INT,
ts TIMESTAMP
)
然后,用如下語句錄入數據:
INSERT my_test VALUES(1,20010101000000)
INSERT my_test(id) VALUES(2)
然后,查詢表中的內容:
SELECT * from my_test
你可以看到內容:
+------+----------------+
| id | ts |
+------+----------------+
| 1 | 20010101000000 |
| 2 | 20010113165713 |
+------+----------------+
TIME類型
MySQL檢索并以'HH:MM:SS'格式顯示TIME值(或對大小時值,'HHH:MM:SS'格式)。TIME值的范圍可以從'-838:59:59'到'838:59:59'。小時部分可能很大的的原因是TIME類型不僅可以被使用在表示一天的時間(它必須是不到24個小時),而且用在表示在2個事件之間經過的時間或時間間隔(它可以是比24個小時大些,或甚至是負值)。
你能用多中格式指定TIME值:
作為'HH:MM:SS'格式的一個字符串。“寬松”的語法被允許--任何標點符號可用作時間部分的分隔符,例如,'10:11:12'和'10.11.12'是等價的。
作為沒有分隔符的'HHMMSS'格式的一個字符串,如果它作為一個時間解釋。例如,'101112'被理解為'10:11:12',但是'109712'是不合法的(它有無意義的分鐘部分)并變成'00:00:00'。
作為HHMMSS格式的一個數字,如果它能解釋為一個時間。例如,101112被理解為'10:11:12'。
YEAR類型
YEAR類型是一個有效的利用1字節類型表示年份。MySQL檢索并且以YYYY格式顯示YEAR值,其范圍是1901到2155。 如果,只想保存日期,那么YEAR比其它類型比如SAMLLINT更為有效。
你能用多種格式指定YEAR值,既可以用4為字符,也可以使用4為字符串,當然要在1901到2155范圍之內。
作為YEAR的一個優點是,你可以指定一個在'00'到'99'范圍的2位字符串或者一個在'00'到'69'和'70'到'99'范圍的值被變換到在2000到2069范圍和1970到1999的YEAR值。