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

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

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

Синтаксис

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

make_timestamp(year int, month int, day int, hour int, min int, sec double precision)

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

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

Резултатът се връща като клеймо за време . По-точно, то се връща като час без часова зона .

Пример

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

SELECT make_timestamp(2020, 10, 25, 9, 30, 17.12);

Резултат:

2020-10-25 09:30:17.12

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

SELECT pg_typeof(make_timestamp(2020, 10, 25, 9, 30, 17.12));

Резултат:

timestamp without time zone

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

Извън обхват

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

SELECT make_timestamp(2020, 13, 25, 9, 30, 17.12);

Резултат:

ERROR: date field value out of range: 2020-13-25

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

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

SELECT make_timestamp(2020, 10, 25, 25, 30, 17.12);

Резултат:

ERROR: time field value out of range: 25:30:17.12

Подаване на низове като аргументи

Документацията на Postgres гласи, че аргументите трябва да са цели числа (и двойна точност в случай на seconds аргумент), но предаването на низове също работи (вероятно защото са имплицитно преобразувани в цели числа), стига всеки аргумент да е в правилния си диапазон.

SELECT make_timestamp('2020', '12', '25', '10', '30', '17.12');

Резултат:

2020-12-25 10:30:17.12

Отново можем да използваме pg_type() за да проверите получения тип данни.

SELECT pg_typeof(make_timestamp('2020', '12', '25', '10', '30', '17.12'));

Резултат:

timestamp without time zone

Все пак трябва да се уверите, че всеки аргумент ще бъде валиден, след като бъде преобразуван в цяло число, в противен случай ще получите грешка.

SELECT pg_typeof(make_timestamp('2020', '13', '25', '10', '30', '17.12'));

Резултат:

ERROR: date field value out of range: 2020-13-25

Часова марка с часова зона

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на неизвестен първичен ключ за таблица, докато идентификаторът е там

  2. Постепенно архивиране на PostgreSQL и възстановяване в момента

  3. Postgres:проверете дали полето на масива съдържа стойност?

  4. Как да активирам php да работи с postgresql?

  5. PostgreSQL СЪЗДАВАНЕ НА ТАБЛИЦА