У меня есть временные метки, хранящиеся как тип Postgres timestamp without time zone
.
В качестве примера я буду использовать метку времени 2013-12-20 20:45:27
. Я предполагаю, что это будет метка времени в формате UTC.
В psql, если я запустил запрос SELECT start_time FROM table_name WHERE id = 1
, я верну эту строку отметки времени, как и ожидалось: 2013-12-20 20:45:27
.
Однако, если в моем приложении Node я использую библиотеку node-postgres для выполнения того же запроса, я получаю метку времени в местном часовом поясе: Fri Dec 20 2013 20:45:27 GMT-0600 (CST)
. Это объект даты Javascript, но он уже сохранен как часовой пояс. Что мне действительно нужно, так это объект даты (или даже просто строка), представляющий 2013-12-20 20:45:27 GMT+0000
. Я уже знаю, что сейчас UTC.
Я попытался установить параметр часового пояса в моем файле postgresql.conf на: timezone = 'UTC'
, без разницы в результатах.
Что я делаю неправильно?
ИЗМЕНИТЬ
Кажется, проблема в этом файле: https://github.com/brianc/node-postgres/blob/master/lib/types/textParsers.js
Если в строке даты, возвращаемой Postgres, не указан часовой пояс (например, Z
или +06:30
, тогда он просто создает объект даты JavaScript, который, как я полагаю, будет просто включать местный часовой пояс. Мне либо нужно изменить мое приложение для сохранения часовых поясов в базе данных или отмены этого преобразователя.