【问题标题】:SQL is returning an incorrect dateSQL 返回的日期不正确
【发布时间】:2020-02-16 17:05:35
【问题描述】:

我正在使用

  • MySQL 工作台
  • Node.js 和 Knex.js

我在 SQL 中的数据如下所示:

+--------------+----+--------------------+
|     date     | id | happinessIndicator |
+--------------+----+--------------------+
| '2019-10-20' |  1 | happy              |
| '2019-10-20' |  2 | happy              |
| '2019-10-20' |  3 | happy              |
| '2019-10-20' |  4 | happy              |
+--------------+----+--------------------+

这是我获得当天投票的代码

exports.day = function (req, res) {
    const today = moment().format('YYYY-MM-DD');
    knex('votes')
        .where('date', today)
        .then(function (resp) {
            res.json({
                status: true,
                message: 'ok',
                data: resp
            })
        })
        .catch(function (error) {
            res.json(
                {
                    status: false,
                    msg: error.code
                }
            )
        })
};

但我的结果是这样的:

他为什么不返回 2019-10-20 就像那里存储的一样?

【问题讨论】:

  • 这只是一个猜测,但可能是时区的问题?我想,您将没有时区的日期存储到数据库中,然后 knex 尝试获取带有时区的日期并失败。由于您可能比格林威治标准时间晚 2 小时,他计算的日期减去这两个小时。尝试为 knex 设置时区并检查它是否仍然发生

标签: node.js mysql-workbench knex.js


【解决方案1】:

这不是错误的日期,这是UTC format

您可以在连接对象中设置自己的时区格式,如下所示: knex({client,connection,useNullAsDefault: true,timezone: 'UTC',});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2019-12-03
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2017-06-23
    相关资源
    最近更新 更多