PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak poznać strefę czasową znacznika czasu w postgresql 8.3?

Zakładam, że masz kolumnę o nazwie ct który ma typ TIMESTAMPTZ w tabeli t . Następnie możesz użyć:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

aby uzyskać przesunięcie strefy czasowej w sekundach. To daje ci 3600 z UTC /GMT oznacza to albo GMT+1 , CET lub cokolwiek. Zwrócona wartość zależy od Twojego TIMEZONE ustawienie.

Przykład (mieszkam w Niemczech, rzeczywista strefa czasowa to GMT+1 /CET ):

test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 18:00:00+01

test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 17:00:00+00

Jak widać, zawsze wyświetla wszystko w skonfigurowanej strefie czasowej. Tak więc przesunięcie, które otrzymasz za pomocą EXTRACT(TIMEZONE FROM ...) zależy od Twojej TIMEZONE ustawienie. Strefa czasowa podana w INSERT jest stracone, bo nie warto być zbawionym. Liczy się to, że wszystko jest w porządku i nie powinno to zależeć od TIMEZONE ustawienie. PostgreSQL robi to bardzo dobrze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd:nie można utworzyć TypedQuery dla zapytania z więcej niż jednym zwrotem

  2. Sterownik QPSQL nie załadowany Qt

  3. php postgres od zapytania do pobierania wierszy w teorii

  4. Jak przekonwertować typ jsonb PostgreSQL 9.4 na float?

  5. sqlalchemy nie wykonuje Skomentuj schemat