PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Кой е подходящ тип данни за съхраняване на часова зона?

За съжаление PostgreSQL не предлага тип данни за часова зона, така че вероятно трябва да използвате text .

interval на пръв поглед изглежда като логична опция и е подходящи за някои употреби. Той обаче не взема предвид лятното часово време, нито пък взема предвид факта, че различните региони в едно и също UTC отместване имат различни правила за лятно часово време.

Няма съпоставяне 1:1 от UTC отместването обратно към часовата зона.

Например часовата зона за Australia/Sydney (Нов Южен Уелс) е UTC+10 (EST ), или UTC+11 (EDT ) по време на лятното часово време. Да, това е същото съкращение EST които САЩ използват; акронимите на часовите зони не са уникални в базата данни tzdata, поради което Pg има timezone_abbreviations настройка. Още по-лошо, Бризбейн (Куинсланд) е на почти същата дължина и е в UTC+10 EST ... но няма лятно часово време, така че понякога е на -1 изместване към Нов Южен Уелс по време на лятното часово време на NSW.

(Актуализиране :Съвсем наскоро Австралия прие A префикс, така че използва AEST като акроним TZ на източните щати, но EST и WST остават в обща употреба).

Много ли обърквате?

Ако всичко, което трябва да съхраните, е UTC отместване след това interval е подходящо. Ако искате да съхраните часова зона , запазете го като text . В момента е трудно да се валидира и да се конвертира към отместване на часовата зона, но поне се справя с DST.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да репликирате PostgreSQL данни на отдалечени сайтове

  2. Търсете в множество таблици и също така показвайте името на таблицата в получените редове

  3. Върнат тип за функция с array_agg()

  4. Postgresql :Обединете 2 подобни бази данни

  5. Как да покажа дядо родител в sql йерархията?