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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置My SQL表中字段的默认CURRENT_TIMESTAMP给出错误的时区相关的知识,希望对你有一定的参考价值。

需要您的帮助,我现在面临一个问题。在表的created_at字段中,它总是给出GMT + 0区域的日期和时间,而不是我期望的GMT + 7。我在此字段中设置默认的CURRENT_TIMESTAMP。

我做的时候

SELECT CURRENT_TIMESTAMP 

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

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

预先感谢

答案

您看到的是by design

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

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

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

以上是关于设置My SQL表中字段的默认CURRENT_TIMESTAMP给出错误的时区的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库查询各表中所有存在默认值的字段

My SQL

怎么用SQL语句添加新字段并设置默认值

怎么把数据库中的某个表的某个字段默认值设为0?

定义默认值

sql server数据库表中各字段名需要大写吗