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

Wstaw czas ze strefą czasową czasu letniego

właściwe sposobem nie jest używanie time with time zone (zwróć uwagę na spację między time i zone ), ponieważ jest zepsute z założenia. Jest w standardzie SQL, więc Postgres obsługuje ten typ - ale odradza nie z niego korzystać. Więcej w tej powiązanej odpowiedzi:

Ponieważ masz problemy z DST , timetz (imię i nazwisko) to szczególnie zły wybór. Jest źle przygotowany do radzenia sobie z czasem letnim. Nie da się stwierdzić, czy 8:00:00 jest zimą lub latem.

Użyj timestamp with time zone (timstamptz ) zamiast. Zawsze możesz wyrzucić część daty. Po prostu użyj start_time::time aby uzyskać lokalne czas od timestamptz . Lub użyj AT TIME ZONE transponować do Twojej strefy czasowej.

Ogólnie, aby automatycznie brać pod uwagę czas letni , użyj nazwy strefy czasowej zamiast skrótu strefy czasowej. Więcej wyjaśnień w tym powiązanym pytaniu i odpowiedzi:

W swoim konkretnym przypadku prawdopodobnie możesz użyć America/Los_Angeles (przykład z timestamptz ):

INSERT INTO mytable(start_time, end_time)
VALUES
   ('1970-01-01 08:00:00 America/Los_Angeles'
  , '1970-01-01 18:00:00 America/Los_Angeles')

Znalazłem to, sprawdzając:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;

Podstawy obsługi 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. Sprawdź, czy w dużej tabeli nie ma zduplikowanych wierszy

  2. Wartość Auto-Incremented nie działa w PostgreSQL podczas korzystania z EntityFramework Core

  3. Jak mogę aktywować nieakcentowe rozszerzenie na już istniejącym modelu?

  4. Lista przechowywanych funkcji, które odwołują się do tabeli w PostgreSQL

  5. Jak wykonać kopię zapasową i przywrócić bazę danych PostgreSQL