Как использовать время GMT в postgresql?

Мы работаем в нашем java-коде с GregorianCalendar. Мы хотели бы сохранить их в нашей базе данных postgresql как GMT +0 раз в столбцах типа timestamp, но мы не знаем, как это сделать. Должны ли поля быть с отметкой времени или без? С помощью аналогичной функции, которая "текущая" функция postgres времени должна использовать current_timestamp или localtimestamp?

Ответ 1

Начните здесь - раздел 8.5.3. " Часовой пояс" из документации.

Разница между CURRENT_TIMESTAMP и LOCALTIMESTAMP - это тип результата - первая возвращает "метку времени с часовым поясом", а вторая - "метку времени":

milen=> select CURRENT_TIMESTAMP;
              now
-------------------------------
 2009-09-05 01:21:37.595704+03
(1 row)

milen=> select LOCALTIMESTAMP;
         timestamp
----------------------------
 2009-09-05 01:21:41.956355
(1 row)

Это другое дело, полностью в котором часовой пояс вы хотите увидеть текущее время. В этом случае важна часовая зона по умолчанию (которая может быть установлена ​​несколькими способами, все описанные в разделе, приведенном выше). Кроме того, вы можете использовать "AT TIME ZONE" в запросе, чтобы получить текущее время в определенном часовом поясе без "возиться" с настройкой "часовой пояс"

milen=> select CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
          timezone
----------------------------
 2009-09-04 22:21:44.418236
(1 row)