В PostgreSQL, make_time()
функцията ви позволява да създадете време от полетата за час, минути и секунди.
Синтаксис
Функцията има следния синтаксис:
make_time(hour int, min int, sec double precision)
Където hour
е часовата част, min
е частта за минутите и sec
е секундната част.
Часът и минутите се предоставят като цяло число , секундите са предоставени като двойна точност .
Резултатът се връща като време . По-точно, то се връща като час без часова зона .
Пример
Ето основен пример за демонстрация.
SELECT make_time(7, 45, 15.08);
Резултат:
07:45:15.08
И можем да проверим типа на връщането със следната заявка.
SELECT pg_typeof(make_time(7, 45, 15.08));
Резултат:
time without time zone
pg_typeof()
функцията връща типа данни на своя аргумент и затова предадох make_time()
като аргумент...
Извън обхват
Ако някой от аргументите е извън диапазона на възможните стойности за неговата част от датата, ще получите грешка „извън диапазона“.
SELECT make_time(25, 45, 15.08);
Резултат:
ERROR: time field value out of range: 25:45:15.08
Подаване на низове като аргументи
Документацията на Postgres гласи, че аргументите трябва да са цели числа (и двойна точност в случай на seconds
аргумент), но предаването на низове също работи (вероятно защото са имплицитно преобразувани в цели числа), стига всеки аргумент да е в правилния си диапазон.
SELECT make_time('7', '45', '15.08');
Резултат:
07:45:15.08
Отново можем да използваме pg_type()
за да проверите получения тип данни.
SELECT pg_typeof(make_time('7', '45', '15.08'));
Резултат:
time without time zone
Все пак трябва да се уверите, че всеки аргумент ще бъде валиден, след като бъде преобразуван в цяло число, в противен случай ще получите грешка.
SELECT make_time('25', '45', '15.08');
Резултат:
ERROR: time field value out of range: 25:45:15.08