整数类型 存储空间 无符号整数范围 有符号整数范围 ------------ --------- ------------------------ ----------------------------------------- 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)这些日期时间类型只能支持到秒级别,不支持毫秒、微秒。也没有产生毫秒的函数。 服务器