Uruchamiamy się w naszym kodzie Java z GregorianCalendar. Chcielibyśmy utrzymać je w naszej bazie danych postgresql jako czas GMT +0 w kolumnach typu znacznika czasu, ale nie jesteśmy pewni, jak to zrobić. Czy pola powinny być opatrzone znacznikiem czasu czy bez? Na podobnym żetonie, który "aktualny" czas funkcji postgres powinniśmy używać: current_timestamp or localtimestamp?Jak korzystać z czasów GMT w postgresql?
Odpowiedz
Zacznij tutaj - rozdział 8.5.3. "Time Zones" z dokumentacji.
Różnica CURRENT_TIMESTAMP i LOCALTIMESTAMP jest typu wyniku - były zwraca „znacznik czasu strefy czasowej”, a drugi - „znacznik czasu”:
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)
To kolejne zależy jedynie od tego czasu strefa, w której chcesz zobaczyć bieżący czas. W takim przypadku ważna jest domyślna strefa czasowa (która może być ustawiona na kilka sposobów, wszystkie opisane w sekcji połączonej powyżej). Również można użyć "AT TIME ZONE" w zapytaniu aby uzyskać aktualny czas w strefie określonym czasie bez „błahy” z „czasowej” Otoczenie:
milen=> select CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
timezone
----------------------------
2009-09-04 22:21:44.418236
(1 row)
Dzięki, po przejrzeniu strony, teraz rozumiem różnicę pól z lub bez znacznika czasu, a my będziemy bez. Jednak, gdy używamy zarówno localtimestamp, jak i current_timestamp, otrzymujemy czas lokalny, a nie GMT – Adam
nie związanych bezpośrednio do Twojego pytania, ale po prostu chciał pokazać, http://joda-time.sourceforge.net/ czas joda jest nieco łatwiejszy w obsłudze. :) http://joda-time.sourceforge.net/userguide.html#TimeZones –
Dzięki, niestety niezwykle trudno jest dodać biblioteki do naszego projektu. – Adam