【发布时间】: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 我认为您可能是对的,因为相比之下时间稍有偏差,有什么地方可以让我在节点中正确执行此操作吗?