整數類型 存儲空間 無符號整數範圍 有符號整數範圍 ------------ --------- ------------------------ ----------------------------------------- tinyint 8 bits 0 ~ 255 -128 ~ 127 smallint 16 bits 0 ~ 65535 -32768 ~ 32767 mediumint 24 bits 0 ~ 16777216 -8388608 ~ 8388607 int 32 bits 0 ~ 4294967295 -2147483648 ~ 2147483647 bigint 64 bits 0 ~ 18446744073709551615 -9223372036854775808 ~ 9223372036854775807
日期類型 存儲空間 日期格式 日期範圍 ------------ --------- --------------------- ----------------------------------------- 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
時間類型 存儲空間 時間格式 時間範圍 ------------ --------- --------------------- ----------------------------------------- time 3 bytes HH:MM:SS -838:59:59 ~ 838:59:59
time 時間範圍竟然有這麼大的範圍,特別是 time 能夠取負值,有點奇怪。後來,看了 MySQL 手冊才知道這是爲了知足兩個日期時間相減才這樣設計的。 mysql
select timediff('2000:01:31 23:59:59', '2000:01:01 00:00:00'); -- 743:59:59 select timediff('2000:01:01 00:00:00', '2000:01:31 23:59:59'); -- -743:59:59 select timediff('23:59:59', '12:00:00'); -- 11:59:59
注意,timediff 的兩個參數只能是 datetime/timestamp, time 類型的,而且這兩個參數類型要相同。即:datetime/timestamp 和 datetime/timestamp 比較;time 和 time 相比較。 sql
雖然 MySQL 中的日期時間類型比較豐富,但遺憾的是,目前(2008-08-08)這些日期時間類型只能支持到秒級別,不支持毫秒、微秒。也沒有產生毫秒的函數。 服務器