В PostgreSQL, make_date()
функцията ви позволява да създадете дата от отделните й полета за година, месец и ден.
Всяка част от датата е предоставена като цяло число , а резултатът се връща като дата .
Синтаксис
Функцията има следния синтаксис:
make_date(year int, month int, day int)
Където year
, month
и day
са цели числа, представляващи годината, месеца и деня на датата.
Пример
Ето основен пример за демонстрация.
SELECT make_date(2020, 07, 25);
Резултат:
2020-07-25
И можем да проверим дали връща тип данни дата със следната заявка.
SELECT pg_typeof(make_date(2020, 07, 25));
Резултат:
date
pg_typeof()
функцията връща типа данни на своя аргумент и затова предадох make_date()
като аргумент...
Извън обхват
Ако някой от аргументите е извън диапазона на възможните стойности за неговата част от датата, ще получите грешка „извън диапазона“.
SELECT make_date(2020, 17, 25);
Резултат:
ERROR: date field value out of range: 2020-17-25
Ето го отново с месец от 00:
SELECT make_date(2020, 00, 25);
Резултат:
date field value out of range: 2020-00-25
Подаване на низове като аргументи
Документацията на Postgres гласи, че аргументите трябва да са цели числа, но предаването на низове изглежда работи (вероятно защото са имплицитно преобразувани в цели числа), стига всеки аргумент да е в правилния си диапазон.
SELECT make_date('2020', '07', '25');
Резултат:
2020-07-25
Отново можем да използваме pg_type()
за да проверите дали резултатът всъщност е дата тип данни.
SELECT pg_typeof(make_date('2020', '07', '25'));
Резултат:
date
Все пак трябва да се уверите, че всеки аргумент ще бъде валиден, след като бъде преобразуван в цяло число, в противен случай ще получите грешка като следната.
SELECT make_date(2020, 'July', 25);
Резултат:
ERROR: invalid input syntax for type integer: "July" LINE 1: SELECT make_date(2020, 'July', 25);