MySQL 日期類型:日期格式、所占存儲空間、日期范圍 比較。
日期類型 存儲空間 日期格式 日期范圍
------------ --------- --------------------- -----------------------------------------
datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
year 1 bytes YYYY 1901 ~ 2155
在 MySQL 中創建表時,對照上面的表格,很容易就能選擇到合適自己的數據類型。不過到底是選擇 datetime 還是 timestamp,可能會有點犯難。這兩個日期時間類型各有優點:datetime 的日期范圍比較大;timestamp 所占存儲空間比較小,只是 datetime 的一半。
另外,timestamp 類型的列還有個特性:默認情況下,在 insert, update 數據時,timestamp 列會自動以當前時間(CURRENT_TIMESTAMP)填充/更新。“自動”的意思就是,你不去管它,MySQL 會替你去處理。
建表的代碼為:
create table t8 (
`id1` timestamp NOT NULL default CURRENT_TIMESTAMP,
`id2` datetime default NULL
);
一般情況下,我傾向于使用 datetime 日期類型。
兩者之間的比較:
1. timestamp容易所支持的范圍比timedate要小。 并且容易出現超出的情況
2.timestamp比較受時區timezone的影響以及MYSQL版本和服務器的SQL MODE的影響.
MySQL 時間類型:時間格式、所占存儲空間、時間范圍。
時間類型 存儲空間 時間格式 時間范圍
------------ --------- --------------------- -----------------------------------------
time 3 bytes HH:MM:SS -838:59:59 ~ 838:59:59
time 時間范圍居然有這么大的范圍,特別是 time 可以取負值,有點奇怪。后來,看了 MySQL 手冊才知道這是為了滿足兩個日期時間相減才這樣設計的。
新聞熱點
疑難解答