Mysql TIMESTAMP 和 DATETIME的区别

相同点

1> 两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。 

不同点

1> 两者的存储方式不一样

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

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

下面我们来测试下。

当插入时间后,查询得到的结果都一样。

Mysql TIMESTAMP 和 DATETIME的区别_第1张图片

当修改当前会话的时区

show variables like '%time_zone%';

set time_zone='+0:00';

通过结果可以看出,createtime中返回的时间提前了8个小时,而createddatetime中时间则不变。这充分验证了两者的区别。

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

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'。

总结:TIMESTAMP和DATETIME除了存储范围和存储方式不一样,没有太大区别。当然,对于跨时区的业务,TIMESTAMP更为合适。

 

你可能感兴趣的:(MySQL)