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

Określ strefę czasową, która ma być używana jako referencyjna strefa czasowa

Musisz dodatkowo zapisać przesunięcie strefy czasowej do timestamp .

Jak już wyjaśnił @Milen (i link do podręcznik ):timestamp zapisuje tylko punkt w czasie (jako wartość abstrakcyjną). Modyfikator strefy czasowej nie zapisane, służy tylko do dostosowania timestamp względem UTC .

Rozważ następującą prezentację:

-- DROP TABLE tbl;
CREATE TEMP TABLE tbl (id int, myts timestamptz, mytz interval);

INSERT INTO tbl VALUES
 (1, now()                , EXTRACT (timezone from now()) * interval '1s')
,(2, '2012-01-01 00:00-05', interval '-5h')
,(3, '2012-01-01 00:00+04', interval '4h')
,(4, '2012-11-11 20:30+03', interval '3h');

SELECT *
      ,(myts AT TIME ZONE mytz)::text
       || CASE WHEN mytz > '0:0' THEN '+' ELSE '' END
       || to_char(mytz, 'FMHH24:mi') AS timestamp_at_origin
FROM tbl;

Uruchom go lokalnie, aby zobaczyć. Zwróć szczególną uwagę na szczegóły W STREFIE CZASOWEJ i jak wyodrębnić strefę czasową z (lokalnego!) timestamp with time zone .
now() zwraca timestamp with time zone lub timestamp w skrócie.

EXTRACT (timezone from now()) * interval '1s'

timestamp_at_origin wyświetla znacznik czasu ze strefą czasową widzianą na początku. Jeśli zrozumiałem Twoje pytanie, to właśnie tego szukasz.
Możesz jeszcze bardziej poprawić formatowanie.

Być może zainteresuje Cię to powiązane pytanie co rzuca trochę światła na niejasności i pułapki stref czasowych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uruchamianie skryptów sql z współzależnościami

  2. Obliczenia n-tego percentyla w postgresql

  3. Podaj przygotowaną instrukcję z tablicą

  4. Postgresql, Ogranicz aktualizację w określonych kolumnach (tylko do odczytu)

  5. Czy usunięcie wiersza z tabeli podstawowej wpływa na widok tej tabeli?