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

Как работи make_timestamptz() в PostgreSQL

В PostgreSQL, make_timestamptz() функцията ви позволява да създадете клеймо за време с часова зона от полетата за година, месец, ден, час, минути и секунди, както и поле за часова зона по избор.

Синтаксис

Функцията има следния синтаксис:

make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])

Където year , month и day са цели числа, представляващи годината, месеца и деня на датата и hour е часовата част, min е частта за минутите и sec е секундната част.

Часът и минутите се предоставят като цяло число , секундите са предоставени като двойна точност .

Незадължителната timezone аргументът е за часовата зона. Ако не е посочено, се използва текущата часова зона.

Резултатът се връща като час с часова зона .

Пример

Ето основен пример за демонстрация.

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);

Резултат:

1999-03-14 10:35:12.15+10

В този случай не предоставих часова зона, така че използва текущата часова зона.

Можем да проверим типа на връщането със следната заявка.

SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));

Резултат:

timestamp with time zone

pg_typeof() функцията връща типа данни на своя аргумент и затова предадох make_timestamptz() като аргумент.

Посочете часова зона

В този пример изрично предоставям часова зона.

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');

Резултат:

1999-03-14 16:35:12.15+10

Ето още един пример, но с различни стойности на часовата зона.

\x
SELECT 
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');

Резултат (с помощта на вертикален изход):

make_timestamptz | 1999-12-31 23:31:00+10
make_timestamptz | 2000-01-01 00:31:00+10
make_timestamptz | 2000-01-01 15:01:00+10
make_timestamptz | 2000-01-01 09:01:00+10
make_timestamptz | 2000-01-01 11:01:00+10
make_timestamptz | 1999-12-31 21:01:00+10

В този пример използвах \x за да активирате разширен дисплей (известен също като „вертикален изход“), за да направите резултатите по-лесни за четене.

Въведете \x превключва разширения дисплей (т.е. активира и деактивира го).

Вижте Връщане на списък с часови зони, поддържани от PostgreSQL, за да получите списък с валидни часови зони.

Извън обхват

Ако някой от аргументите е извън диапазона на възможните стойности за неговата част от датата, ще получите грешка „извън диапазона“.

SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);

Резултат:

ERROR: date field value out of range: 1999-03-32

В този случай денят е бил 32, което е извън обхвата и затова съобщението обяснява, че стойността на полето за дата е извън диапазона.

Ако само стойността на полето за време е извън диапазона, грешката се формулира съответно.

SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);

Резултат:

ERROR: time field value out of range: 10:61:12.15

В този случай minutes аргументът е 61, което е извън обхвата.

Часово клеймо без часова зона

За да създадете времева марка без часова зона, използвайте make_timestamp() функция.


  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. postgresql генерира последователност без празнина

  3. Как да създадете индекс за елементи от масив в PostgreSQL?

  4. Изчислете броя на едновременните събития в SQL

  5. Как да променя стила на дата в PostgreSQL?