时区导致的一个数据插入失败的案例:
直接看我贴图,严格的sql_mode模式,时区和服务器时区一致(东八区)
<a href="https://s4.51cto.com/oss/201711/02/24881beb4782c623ebbfa32f5c40d164.png" target="_blank"></a>
创建一个带有timestamp格式的字段的表tt,往里插入一条记录。可以看到第一条记录插入失败。而从8点之后的插入都能成功。
<a href="https://s1.51cto.com/oss/201711/02/186a2fd520b246ec2a0e76653e26fb1d.png" target="_blank"></a>
修改时区为格林威治时区。再次执行插入操作:
<a href="https://s2.51cto.com/oss/201711/02/e2de279589263dafb0b1fc09ba47bc5b.png" target="_blank"></a>
可以看到插入成功了。
注意:
现在datetime格式也支持自动更新,且只占据5bytes长度(timestamp占据4bytes),但是datetime支持的时间范围更广泛。因此推荐使用datetime格式的字段类型。
本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1978544,如需转载请自行联系原作者