У меня есть простой node.js сервер, который принимает запросы и запрашивает базу данных. Когда я пытаюсь запросить все балансы с помощью следующей функции
const Pool = require('pg').Pool;
const pool = new Pool({
user: 'myUsername',
host: 'localhost',
database: 'myDatabase',
password: 'myPassword',
port: 5432,
});
const getBalances = (request, response) => {
pool.query('SELECT * FROM balances', (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
};
, я получаю следующий результат (игнорируйте балансы, соответствующие даты частей)
[{"balance":400,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":200,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":200,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":400,"last_received":"2020-06-20T22:00:00.000Z"}]
Это странно, так как last_received должен указывать на сегодняшнюю дату. Когда я проверяю это с помощью PostgreSQL CLI, я получаю следующий результат, используя тот же запрос, что и в коде node.js:
balance | last_received
--------+--------------
400 | 2020-06-21
200 | 2020-06-21
200 | 2020-06-21
400 | 2020-06-21
Дата не совпадает, и она не возвращает время, когда я запрашиваю, используя node.js. Тип данных даты, который я использовал для создания таблицы, - это стандартный тип данных DATE из PostgreSQL. Почему это происходит и как мне это разрешить?
Что я пробовал: я пробовал повторно запрашивать и перезапускать оба раза несколько раз, чтобы убедиться, что это не какая-то ошибка времени, а каждый раз одно и то же result, и я запросил show timezone
и получил одинаковый результат на обоих концах.
Кроме того, при запросе select now()
я получаю правильную и одинаковую дату в обоих представлениях, но когда я запрашиваю select CURRENT_DATE
, они различаются на день, что указывает на то, что проблема связана с ключевым словом CURRENT_DATE.