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

Postgres време с равенство на часовата зона

Ето два начина за оценка на timetz равенство:

SELECT a, b, a = b AS plain_equality
     , '2000-1-1'::date + a = '2000-1-1'::date + b AS ts_equality
     , a AT TIME ZONE 'UTC', b AT TIME ZONE 'UTC'  AS timetz_equality
FROM  (
   SELECT '12:00:00 -0800'::timetz AS a
        , '14:00:00 -0600'::timetz AS b
   ) sub;

Първият, като го добавите към date .
Вторият с помощта на AT TIME ZONE конструкция.

Но по-скоро не използвайте time with time zone изобщо.
Postgres поддържа типа само защото е в SQL стандарта. Той е счупен по дизайн (не може да се вземе предвид DST!) и използването му е обезкуражено.

Цитирайки ръководството тук:

Типът time with time zone се дефинира от стандарта SQL, но дефиницията показва свойства, които водят до съмнителна полезност. В повечето случаи комбинация от date , time , timestamp without time zone и timestamp with time zone трябва да предоставя пълен набор от функции за дата/час, изисквани от всяко приложение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за тип данни на Postgres JSON Rails

  2. alembic util грешка в командата не може да намери идентификатор

  3. Какво означава грешка при импортиране:Символът не е намерен:_PQencryptPasswordConn и как да го поправя?

  4. Име на таблица като параметър на функцията на PostgreSQL

  5. в postgres, можете ли да зададете форматирането по подразбиране за времева марка, по сесия или глобално?