Разница в данных между Nodejs SQL Query и MySQL Query - PullRequest
2 голосов
/ 21 апреля 2020

У меня есть настройка сервера Node, которая запрашивает базу данных mysql, однако данные, возвращаемые с сервера узла, отличаются от данных, возвращаемых при выполнении запросов непосредственно в рабочей среде mysql.

Я запускаю следующий запрос в узле:

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".

1 Ответ

1 голос
/ 21 апреля 2020

Нашел ответ, который работал для меня на другом посте: формат даты в node.JS

Добавление этой строки в конфигурацию соединения исправило ее:

dateStrings: 'date'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...