设置MySQL表中字段的默认CURRENT_TIMESTAMP给出错误的时区

问题描述 投票:-1回答:1

在表的created_at字段中,总是给出GMT + 0区域的日期和时间,而不是我期望的GMT + 7。我在此字段中设置了默认的CURRENT_TIMESTAMP

我做的时候

SELECT CURRENT_TIMESTAMP 

它给出了正确的日期和时间。但是,当我点击将数据插入该表的API时,它始终会显示GMT + 0。

MySQL数据库中是否缺少任何配置?

mysql
1个回答
-1
投票

您看到的是by design

MySQL将TIMESTAMP值从当前时区转换为UTC进行存储,然后从UTC返回当前时区进行检索。 (对于其他类型,例如DATETIME,则不会发生这种情况。)

关于访问时间戳的值,您需要适当地管理会话的time_zone

默认情况下,每个连接的当前时区是服务器的时间。可以在每个连接的基础上设置时区。只要时区设置保持不变,您将获得与存储相同的值。如果存储TIMESTAMP值,然后更改时区并检索该值,则检索到的值与您存储的值不同。发生这种情况是因为没有在两个方向上使用相同的时区进行转换。当前时区可用作time_zone系统变量的值。

© www.soinside.com 2019 - 2024. All rights reserved.