赞
踩
相同点
1> 两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。
不同点
1> 两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
而对于DATETIME,不做任何改变,基本上是原样输入和输出。
下面我们来测试下。
当插入时间后,查询得到的结果都一样。
当修改当前会话的时区
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更为合适。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。