MySQL整數/日期/時間類型說明

一,mysql整數類型:
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分別使用8,16,24,32,64位存儲空間。

MySQL 整數類型:所佔存儲空間、整數範圍比較。

整數類型        存儲空間       無符號整數範圍                     有符號整數範圍
------------  ---------   ------------------------  -----------------------------------------
 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
存儲的值的範圍爲-2(N-1)到2(N-1)-1,無符號存儲範圍0到2N-1。
mysql能夠爲整數類型指定寬度,例如int(11),對大多數應用來講這是無心義的:它不會限制值的合法範圍,只是規定mysql的一些交互工具(例如mysql命令行客戶端)用來顯示字符的個數。對於存儲和計算來講,int(1)和int(20)是相同的

二,mysql日期類型:

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

timestamp 類型的列還有個特性:默認狀況下,在 insert, update 數據時,timestamp 列會自動以當前時間(CURRENT_TIMESTAMP)填充/更新。「自動」的意思就是,你不去管它,MySQL 會替你去處理。

timestamp顯示的值依賴於時區,mysql服務器,操做系統,以及客戶端鏈接都有時區設置。datetime顯示的值與時區無關係,保留文本表示的日期和時間。

三,mysql時間類型:

MySQL 時間類型:時間格式、所佔存儲空間、時間範圍。

時間類型        存儲空間      時間格式                 時間範圍
------------  ---------   --------------------- -----------------------------------------
 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)這些日期時間類型只能支持到秒級別,不支持毫秒、微秒。也沒有產生毫秒的函數。 服務器

相關文章
相關標籤/搜索