【问题标题】:MySQL DateTime Unexpected behaviorMySQL DateTime 意外行为
【发布时间】:2016-10-16 23:33:16
【问题描述】:

我的表格中有一个 DATETIME 字段的显示方式与我返回的不同。

为了理解,以下是我在 API 中返回的确切对象字段:

但是,当我使用 PostMan 并查看结果时,时间正在从我返回的内容更改为:

我不明白发生了什么。我正在尝试将 DATETIME 作为 UTC 时间存储在数据库中,然后将其发送到客户端,客户端会将其转换为本地时间。

这是 DATETIME 日期在数据库中的样子:

【问题讨论】:

  • 您的日期似乎回到了 UTC 时区。这可以解释 4 小时的差异。而且您的数据库和结果之间的代码似乎存在问题。日期之一可能是当前日期。
  • PostMan 无法直接与 MySQL 对话,因为 MySQL 不使用 HTTP/HTTPS 协议。但是 MySQL 确实理解查询。您要向 MySQL 发送哪些查询?

标签: javascript mysql node.js datetime postman


【解决方案1】:

您没有以 UTC 时间存储日期。 “GMT-0400 (EDT)”表示它们以东部时间存储。其他结果中的 Z 表示 UTC(或 Zulu)时间,根据此规范:http://www.ietf.org/rfc/rfc3339.txt

我希望您的 MySQL 安装将默认时区设置为您的盒子所在的时区 (https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html),因此当您在未指定时区的情况下添加时间时,假定它位于默认时区。然后在您的响应中将其转换为 UTC,时间增加了四个小时。

您可能应该在向数据库添加信息时指定时区,和/或更改数据库的默认时区。根据您用于访问数据库的 API,可能还有另一层“有用”的改变,因此如果有关于 API 的相关信息,您可以将其添加到您的问题中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多