站长资讯网
最全最丰富的资讯网站

mysql 日期和时间类型

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型   大小 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值  
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间  
YEAR 1 1901/2155 YYYY 年份值  
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值  
TIMESTAMP 4

1970-01-01 00:00:00/2038

结束时间是第2147483647秒,北京时间2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMS    

日期时间类型

MySQL数据类型 含义
date 日期 '2008-12-2'
time 时间 '12:25:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间

注意:若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

  创建一个t8表,测试:  mysql>createtablet8(n1year,n2date,n3time,n4datetime);  QueryOK,0rowsaffected(0.04sec)    #n1(year)插入"1901"值.  mysql>insertintot8(n1)values(1901);  QueryOK,1rowaffected(0.00sec)    #查看表中的数据.  mysql>select*fromt8;  +------+------+------+------+  |n1|n2|n3|n4|  +------+------+------+------+  |1901|NULL|NULL|NULL|  +------+------+------+------+  1rowinset(0.00sec)    #n2(date)插入"2017-12-04"值.  mysql>insertintot8(n2)values("2017-12-04");  QueryOK,1rowaffected(0.04sec)    #查看表中的数据.  mysql>select*fromt8;  +------+------------+------+------+  |n1|n2|n3|n4|  +------+------------+------+------+  |1901|NULL|NULL|NULL|  |NULL|2017-12-04|NULL|NULL|  +------+------------+------+------+  2rowsinset(0.00sec)    #n3(time)插入"18:12:03"值.  mysql>insertintot8(n3)values("18:12:03");  QueryOK,1rowaffected(0.01sec)  mysql>select*fromt8;  +------+------------+----------+------+  |n1|n2|n3|n4|  +------+------------+----------+------+  |1901|NULL|NULL|NULL|  |NULL|2017-12-04|NULL|NULL|  |NULL|NULL|18:12:03|NULL|  +------+------------+----------+------+  3rowsinset(0.00sec)    #n4(datetime)插入"2018-12-0318:12:03"值.  mysql>insertintot8(n4)values("2018-12-0318:12:03");  QueryOK,1rowaffected(0.00sec)  mysql>select*fromt8;  +------+------------+----------+---------------------+  |n1|n2|n3|n4|  +------+------------+----------+---------------------+  |1901|NULL|NULL|NULL|  |NULL|2017-12-04|NULL|NULL|  |NULL|NULL|18:12:03|NULL|  |NULL|NULL|NULL|2018-12-0318:12:03|  +------+------------+----------+---------------------+  4rowsinset(0.00sec)    #timestamp属性,自动更新时间戳.  mysql>createtablet9(  ->idint,  ->tstimestamp  ->);  QueryOK,0rowsaffected(0.00sec)  mysql>insertintot9(id)values(1);  QueryOK,1rowaffected(0.00sec)  mysql>select*fromt9;  +------+---------------------+  |id|ts|  +------+---------------------+  |1|2019-01-2619:04:40|  +------+---------------------+  1rowinset(0.00sec)

TIMESTAMP和DATETIME的不同点:

两者的存储方式不一样

对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。

而对于DATETIME,不做任何改变,基本上是原样输入和输出。

两者所能存储的时间范围不一样

timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。

datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号