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