mysql之更改 MySQL 时区会更改数据库中 DateTime 字段的值吗
我有一个设置为本地时区的 MySQL 数据库。尽管数据库使用不同的时区,但时间作为 UTC 时间插入。我想在 MySQL 服务器上将时区更改为 UTC。我找到了有关如何执行此操作的文档,但我很不情愿,因为我不知道这是否也会更改已存储在数据库中的值。
我的问题:更改 MySQL 服务器的时区是否也会更改已存储的值?
请您参考如下方法:
原则上不应该。不应该更改的原因有多种,具体取决于您的值的类型:主要是 DATETIME 和 TIMESTAMP。
DATETIME 值永远不会转换,因此它们与时区无关。
TIMESTAMP 值被转换(直接引用此处的手册 --- 我假设您有一个相当新版本的 MySQL)“从当前时区到 UTC 进行存储,然后从 UTC 返回到当前时区进行检索。(这其他类型如 DATETIME 不会发生。)默认情况下,每个连接的当前时区是服务器的时间。可以在每个连接的基础上设置时区。只要时区设置保持不变,您就可以取回您存储的相同值。如果您存储一个 TIMESTAMP 值,然后更改时区并检索该值,则检索到的值与您存储的值不同。发生这种情况是因为未使用相同的时区进行转换两个方向。” (来自 http://dev.mysql.com/doc/refman/5.5/en/datetime.html)。
因此,在这两种情况下,实际存储在服务器上的数据都不会改变(这是应该的),但是您的查询将显示的值前后可能会有所不同。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。