【问题标题】:MySql returns wrong time from table dataMySql 从表数据返回错误的时间
【发布时间】:2019-05-14 07:40:56
【问题描述】:

我的表中有数据,其中一列是 DATETIME。

select time from tbdt where unix_timestamp(time) > unix_timestamp(now()) order by time asc limit 1

现在 NodeJS 在 console.log() 中打印错误的时间,例如,

实际日期时间是2018-12-16 15:00:00 在数据库表中.. 但是mysql返回2018-12-16T09:30:00.000Z

相差 5 小时 30 分钟,我的时区是 +5:30 (IST)

我不知道哪里出错了,不管是在 MySql 中还是在 Node Js 中

【问题讨论】:

    标签: mysql node.js datetime


    【解决方案1】:

    需要在MySql中使用convert_tz函数。

    SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+5:30');
    

    它具有以下签名:

    CONVERT_TZ(dt,from_tz,to_tz)
    

    https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_convert-tz

    【讨论】:

      【解决方案2】:

      您应该检查运行 MySQL 的服务器时间,因为它会从托管它的服务器中选择时间。

      这是由 MySQL 而不是 NodeJS 完成的,您可以通过控制台或 SQL 开发工具直接将上述查询运行到数据库中来验证这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-14
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        相关资源
        最近更新 更多