MySQL整数/日期/时间类型说明
时间:2014-12-30 21:18 来源:linux.it.net.cn 作者:IT
-
MySQL 整数类型:所占存储空间、整数范围比较。
-
MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。
-
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 手册才知道这是为了满足两个日期时间相减才这样设计的。
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 相比较。
虽然 MySQL 中的日期时间类型比较丰富,但遗憾的是,目前(2008-08-08)这些日期时间类型只能支持到秒级别,不支持毫秒、微秒。也没有产生毫秒的函数。
(责任编辑:IT)
一,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 手册才知道这是为了满足两个日期时间相减才这样设计的。 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 相比较。 虽然 MySQL 中的日期时间类型比较丰富,但遗憾的是,目前(2008-08-08)这些日期时间类型只能支持到秒级别,不支持毫秒、微秒。也没有产生毫秒的函数。 (责任编辑:IT) |