在Mysql中timestamp和datetime都可以存储时间,它们两者有什么区别?
timestamp记录的时间包含时区,会随着时区的变化而变化,而datetime不会随时区变化。
通过如下的例子来说明这个现象:
数据库当前时区:
存储的时间为:
修改数据库时区
set global time_zone='+08:00';
set time_zone='+08:00';
flush privileges;
数据库数据
其中timestamp的时间增加的4个小时,而datetime没有变化。
为什么timestamp会增加4个小时?
timestamp的值是 UTC+时区 表示的。+4时区时,时间为12:12,则UTC时间为8:12。
当时区调整为+8时,根据timestamp的显示规则【UTC+时区】,为8:12+8=16:12。