【问题标题】:Getting wrong timezone time from the TIMESTAMP in mysql从mysql中的TIMESTAMP获取错误的时区时间
【发布时间】:2021-02-14 19:42:59
【问题描述】:

在我的应用程序中,我使用MySQL(version: 5.6.10) 并将时间存储为TIMESTAMP。当我尝试检索时间时,我得到了错误的时间。

我的时区是+5:30。当我存储时间戳时,它使用+00:00 时区存储。当我检索时间时,减去即时间到了。 -05:30 而不是 +05:30

让我添加一个例子

如果我使用NOW() 将时间存储在2020-11-02 12:00:00,它将存储为2020-11-02 06:30:00。但是,当我检索数据时,通过减去-05:30,它再次变为2020-11-02 01:00:00。我不明白为什么会这样。

请帮我解决这个问题。

谢谢...

【问题讨论】:

  • 我的时区是 +5:30。 这是您的客户端主机和服务器主机的时区吗?您的服务器是否有同样的想法? 如果我在 2020-11-02 12:00:00 使用 NOW() 存储时间“在 2020-11-02 12:00:00”在哪里?在你的客户?在服务器?你用INSERT NOW() ... INTO ...吗? 它存储为 2020-11-02 06:30:00 你如何检测到这个?
  • @Akina, My Timezone is +5:30 是我运行客户端 Web 应用程序的时区。当我运行INSERT NOW() ... INTO ... 时,它存储为2020-11-02 06:30:00。我在 MySQL 工作台中看到了这个值。当我检索到这个时,我得到了2020-11-02 01:00:00。请帮助我理解这一点
  • 嗨。这里缺少很多东西。请编辑您的问题以包含从服务器检索时间戳并将其发送到客户端的代码。还请在您正在阅读的表单中包含显示时间戳的客户端代码。还请告诉我们您的 MYSQL 服务器 (SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;) 中的确切时区设置。还请告诉我们您的服务器和客户端 (Intl.DateTimeFormat().resolvedOptions().timeZone) 上的时区设置。
  • 您可能还想阅读 Stack Overflow 帮助中心的 How to create a Minimal, Reproducible Example。谢谢。

标签: mysql sql node.js timezone typeorm


【解决方案1】:

您需要在 php.ini 文件中更改时区,否则在 default-time-zone='+00:00' 中设置时区 my.cnf,如果您不想在服务器端更改任何内容,请运行查询

tablename中选择UNIX_TIMESTAMP(column_name)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2021-08-13
    • 2012-05-18
    • 2012-01-04
    • 2012-09-13
    • 2021-08-04
    • 2015-12-25
    • 2019-10-23
    相关资源
    最近更新 更多