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

Jaki jest odpowiedni typ danych do przechowywania strefy czasowej?

Niestety PostgreSQL nie oferuje typu danych strefy czasowej, więc prawdopodobnie powinieneś użyć text .

interval na pierwszy rzut oka wydaje się logiczną opcją i jest odpowiednie do niektórych zastosowań. Jednak nie uwzględnia czasu letniego ani faktu, że różne regiony w tym samym przesunięciu UTC mają różne reguły czasu letniego.

Nie ma mapowania 1:1 z przesunięcia czasu UTC z powrotem do strefy czasowej.

Na przykład strefa czasowa Australia/Sydney (Nowa Południowa Walia) to UTC+10 (EST ) lub UTC+11 (EDT ) w czasie letnim. Tak, to ten sam akronim EST używane przez USA; akronimy stref czasowych nie są unikalne w bazie danych tzdata, dlatego Pg ma timezone_abbreviations ustawienie. Co gorsza, Brisbane (Queensland) znajduje się na prawie tej samej długości geograficznej i jest w UTC+10 EST ... ale nie ma czasu letniego, więc czasami jest na poziomie -1 przesunięcie do Nowej Południowej Walii podczas czasu letniego w NSW.

(Aktualizacja :Niedawno Australia przyjęła A prefiks, więc używa AEST jako jego wschodnie stany akronim TZ, ale EST i WST pozostają w powszechnym użyciu).

Dużo się mylisz?

Jeśli wszystko, co musisz przechowywać, to przesunięcie UTC następnie interval jest odpowiednie. Jeśli chcesz zapisać strefę czasową , zapisz go jako text . W tej chwili trudno jest sprawdzić poprawność i przekonwertować na przesunięcie strefy czasowej, ale przynajmniej radzi sobie z czasem letnim.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak w naturalny sposób połączyć dwa zapytania z klauzulą?

  2. PO WSTAWIĆ wyzwalacz w oddzielnej transakcji?

  3. Jak zredukować wiersze wynikowe zapytania SQL w pełnym zakresie?

  4. Rails 3, Heroku:Taps Server Error:PGError:ERROR:nieprawidłowa sekwencja bajtów do kodowania UTF8:0xba

  5. Jak za pomocą homebrew obniżyć wersję postgresql z 10.1 do 9.6 w systemie Mac OS?