Итак, я храню время, соответствующее часовому поясу, скажем, 12 полдень в Москве, как 2014-01-22 12:00:00+04
. Я хочу вернуть это, но если я просто позвоню select my_timestamp from my_table
, он вернет 2014-01-22 08:00:00+00
. У меня есть столбец timezone
с именем olson в часовом поясе (в данном случае europe/moscow
), есть ли способ, которым я могу построить выбор, который возвращает мне точный объект, который я вводил с сохранением его часового пояса, в отличие от его преобразования в локальное время моего сервера (ВРЕМЯ ПО ГРИНВИЧУ)? Я просмотрел документы postgres, которые упоминают функцию at time zone
, но не успели получить ее, чтобы сохранить информацию о часовом поясе при возврате.выберите временную метку tz со своим локальным смещением utc
ответ
Нет, нет никакого способа сделать это. PostgreSQL не сохраняет смещение клиента, который вставляет или обновляет значение.
Если вы храните это смещение в отдельном столбце, вы можете связать его со значением временной метки, но вы рискуете вернуть неправильное значение для определенных условий, которые включают летнее время.
Использование синтаксиса AT TIME ZONE
вместе с правильным часовым поясом должно дать вам правильное значение временной метки, но оно не будет включать смещение клиента, который первоначально вставил или обновил метку времени.
в качестве примечания, является ли совет разработчика не ссылкой конкретно на «время» без компонента даты? Я использую 'timestamp с часовым поясом'. – bbm
@bbm: Да, спасибо, что указали это. Я не знаю, о чем я думал. –
Смотрите, если это поможет в любом случае:
SELECT now(), now()::timestamp, now() AT TIME ZONE 'europe/moscow', now()::timestamp AT TIME ZONE 'europe/moscow'
Вы можете конвертировать между часовыми поясами. Не дает вам часовой пояс + 04, но дает вам время в этот часовой пояс.
- 1. Сохранять временную метку со смещением UTC от строки в Cassandra
- 2. выберите временную метку старше
- 3. Как рассчитать временную метку GMT и UTC
- 4. UTC Временная метка в обычную временную метку?
- 5. Преобразовать временную метку sys в UTC
- 6. Преобразовать временную метку в часовой пояс UTC
- 7. Как получить временную метку UTC в JavaScript?
- 8. Добавление/вычитание секунды на временную метку UTC
- 9. получить временную метку UTC TimeZone в Javascript
- 10. Как правильно хранить UTC datetime и работать с локальным смещением?
- 11. Как сохранить временную метку с смещением часовой пояс UTC в Java 6 без изменения чего-либо?
- 12. Python: Как преобразовать временную метку UTC в python utc datetime?
- 13. ZonedDateTime для UTC со смещением применяется?
- 14. Создайте временную метку RFC 3339 в Python
- 15. MySQL выберите дату, используя временную метку
- 16. Выберите, используя временную метку в качестве критерия
- 17. выберите значения, имеющие максимальную временную метку
- 18. JPA запроса сравнить метку время со смещением времени системы
- 19. Дубликат файлового дескриптора со своим собственным смещением файла
- 20. Выберите оператор со смещением в ABAP
- 21. Сравните временную метку удаленного файла с локальным файлом, используя Ant
- 22. Преобразование локальной временной метки в временную метку UTC в Java
- 23. Как обновить временную метку utc в базе данных сервера
- 24. JDBC/MySQL: сохранить временную метку всегда с помощью UTC
- 25. Получить временную метку с даты и времени в UTC
- 26. Как преобразовать временную метку в UTC, используя AWK
- 27. Как сохранить временную метку в формате UTC через Hibernate?
- 28. sqldf: изменяет временную метку с локального времени на GMT/UTC
- 29. Как конвертировать временную метку PST Unix в UTC?
- 30. Как получить реальную временную метку UTC (независимая от клиента)?
Erwin Brandstetter дал отличный ответ, который вам может пригодиться: http://stackoverflow.com/a/9576170 – bma
Спасибо, bma, это довольно полная разбивка. Позор, я думаю, мне придется хранить время как наивное и в совокупности с моим часовым поясом в коде моего приложения. – bbm