Я использую PostgreSQL 10 на установленной версии Vagrant VM: 2.1.1 со следующей ОС:
Идентификатор распространителя: Debian
Описание: Debian GNU / Linux 9.4 (растянуть)
Релиз: 9.4
Кодовое имя: stretch
Моя локальная настройка на сервере:
timedatectl status дает мне следующее:
Мои настройки моей БД PSQL:
Select NOW(); дает мне правильный момент времени.show timezone; установлен на «Европа / Вена», что является правильным часовым поясом.Проблема:
У меня есть таблица guest_group со следующей строкой:
arrival_date DATE NOT NULL,
и следующее значение:
2018-07-23
Но когда я запрашиваю свою БД, все работает, как ожидалось, за исключением того, что я получаю следующий результат:
arrivalDate: 2018-07-22T22:00:00.000Z,
Как-то у меня получается вчерашний день, 22-е, а не 23-е.
Запрос к базе данных в оболочке дает мне правильную дату - SELECT * FROM guest_group;
Обновлять: Я запрашиваю БД с NodeJS и узел-postgres. С запросами все работает отлично, кроме даты. После дальнейших исследований я пришел к выводу, что это как-то связано с node-postgres и этим проблема. Вот аналогичный проблема. Я буду работать над своим окончательным решением на следующей неделе и поделюсь им здесь.
Да, это мой sql-скрипт для создания таблицы: CREATE TABLE IF NOT EXISTS guest_group ( booking_number VARCHAR(100) PRIMARY KEY, arrival_date DATE NOT NULL, departure_date DATE NULL, custom_fields JSONB NOT NULL, customer_id INTEGER REFERENCES customer (id) NOT NULL, UNIQUE (booking_number, customer_id) ) WITH (OIDS=FALSE); Когда я использую timedatectl status | grep "Time zone" в терминале на моей виртуальной машине, я получаю Time zone: Europe/Vienna (CEST, +0200)





Вы уверены, что ваш
arrival_dateотносится к типуDATEPostgres? Похоже, этоTIMESTAMP. Какой часовой пояс установлен на виртуальной машине?