Home  >  Article  >  Database  >  MySQL整数/日期/时间类型说明_MySQL

MySQL整数/日期/时间类型说明_MySQL

WBOY
WBOYOriginal
2016-06-01 13:31:451010browse

bitsCN.com

MySQL整数/日期/时间类型说明

 

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:59select timediff('2000:01:01 00:00:00', '2000:01:31 23:59:59');  -- -743:59:59select timediff('23:59:59', '12:00:00');                        --  11:59:59

 

 

注意,timediff 的两个参数只能是 datetime/timestamp, time 类型的,并且这两个参数类型要相同。即:datetime/timestamp 和 datetime/timestamp 比较;time 和 time 相比较。

 

虽然 MySQL 中的日期时间类型比较丰富,但遗憾的是,目前(2008-08-08)这些日期时间类型只能支持到秒级别,不支持毫秒、微秒。也没有产生毫秒的函数。

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn