【问题标题】:Difference in data between Nodejs SQL Query and MySQL QueryNodejs SQL Query 和 MySQL Query 的数据差异
【发布时间】:2020-04-21 12:25:24
【问题描述】:

我有一个节点服务器设置,它正在查询 mysql 数据库,但是从节点服务器返回的数据与直接在 mysql 工作台中运行查询返回的数据不同。

我在 Node 中运行以下查询:

SELECT date
FROM Availability 
WHERE NurseNo = 7320 AND 
(date BETWEEN '2020-08-01 01:00:00' AND '2020-09-01')
ORDER BY Date ASC;

此查询返回以下记录:

[
    {
        "date": "2020-08-01T23:00:00.000Z"
    },
    {
        "date": "2020-08-02T23:00:00.000Z"
    },
    {
        "date": "2020-08-03T23:00:00.000Z"
    },
    {
        "date": "2020-08-04T23:00:00.000Z"
    },
    {
        "date": "2020-08-05T23:00:00.000Z"
    },
    {
        "date": "2020-08-06T23:00:00.000Z"
    },
    {
        "date": "2020-08-07T23:00:00.000Z"
    },
    {
        "date": "2020-08-08T23:00:00.000Z"
    }
]

但是,当我在 mysql 工作台中运行完全相同的查询时,我得到了这些记录:

[
    {
        "date": "2020-08-01 00:00:00"
    },
    {
        "date": "2020-08-02 00:00:00"
    },
    {
        "date": "2020-08-03 00:00:00"
    },
    {
        "date": "2020-08-04 00:00:00"
    },
    {
        "date": "2020-08-05 00:00:00"
    },
    {
        "date": "2020-08-06 00:00:00"
    },
    {
        "date": "2020-08-07 00:00:00"
    },
    {
        "date": "2020-08-08 00:00:00"
    },
    {
        "date": "2020-08-09 00:00:00"
    }
]

为什么节点服务器错误地拉回的记录比mysql工作台少?

编辑实际查询字符串:

节点字符串中的变量来自url查询,如下:

availability/get-availability?NurseNo=7320&DateFrom=2020-08-01&DateTo=2020-09-01&loadDay=false

节点:

SELECT date
FROM Availability 
WHERE NurseNo = ${data.NurseNo} AND 
(date BETWEEN '${data.DateFrom} 01:00:00' AND '${data.DateTo}')
ORDER BY Date ASC;

MySQL 工作台:

SELECT *
FROM Availability
WHERE NurseNo = 7320 AND
(Date BETWEEN "2020/08/01 00:00:00" AND "2020/09/01")
ORDER BY Date ASC;

看看两个查询中的时间略有不同,在节点查询中,日期的时间是"01:00:00",而 mySql 的时间是 00:00:00,我尝试将 mySql 时间更改为与节点相同,但是然后不显示"2020-08-01"的日期。

【问题讨论】:

  • 一个可能设置了连接时区,另一个没有,MySQL 正在帮助翻译日期。
  • 您确定在这两种情况下都运行了准确的查询吗?您可以发布两种情况下使用的实际查询字符串吗?
  • 另一个原因可能是节点查询的数据库或表与直接查询不同
  • @NikosM.add 在查询字符串中并对此进行了小解释。
  • @AKX 我认为您可能是对的,因为相比之下时间稍有偏差,有什么地方可以让我在节点中正确执行此操作吗?

标签: mysql node.js


【解决方案1】:

在另一个帖子中找到了对我有用的答案:date format in node.JS

将此行添加到连接配置中修复了它:

dateStrings: 'date'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多