1.DATE、DATETIME和TIMESTAMP 表达的时间范围
Type | Range | Remark |
---|---|---|
DATE | ‘1000-01-01’ to ‘9999-12-31’ | 只有日期部分,没有时间部分 |
DATETIME | ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’ | 时间格式为 YYYY-MM-DD hh:mm:ss,默认精确到秒 |
TIMESTAMP | ‘1970-01-01 00:00:01’ UTC to '2038-01-19 03:14:07’UTC | 默认精确到秒 |
2.DATETIME和TIMESTAMP 区别
(1) 时间范围不一样,TIMESTAMP 要小很多 ,且最大范围为2038-01-19 03:14:07.999999,到期也不远了。
(2)datetime与时区无关、timestamp与时区有关
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
(3) datetime和timestamp都可以当作时间戳使用
datetime和timestamp都可以设置默认值,并且在其他列值更新时更新为当前时间,DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP
3.测试时区影响:
1、创建表date,一个是timestamp类型,一个是datetime类型。插入数据,相同的时间。
修改时区set time_zone=’+0:00’;为0时区(格林尼治时区)后,查看时间,发现timestamp改变了8个小时,datetime没变。