W PostgreSQL funkcja make_time() funkcja umożliwia utworzenie czasu z pól godzin, minut i sekund.
Składnia
Funkcja ma następującą składnię:
make_time(hour int, min int, sec double precision)
Gdzie hour to część godzinowa, min to część minut, a sec to druga część.
Godzina i minuty są podawane jako liczba całkowita , sekundy są podawane jako podwójna precyzja .
Wynik jest zwracany jako czas . Dokładniej, jest zwracany jako czas bez strefy czasowej .
Przykład
Oto podstawowy przykład do zademonstrowania.
SELECT make_time(7, 45, 15.08); Wynik:
07:45:15.08
I możemy zweryfikować typ zwrotu za pomocą następującego zapytania.
SELECT pg_typeof(make_time(7, 45, 15.08)); Wynik:
time without time zone
pg_typeof() funkcja zwraca typ danych swojego argumentu, więc przekazałem make_time() jako argument..
Poza zasięgiem
Jeśli którykolwiek z argumentów jest poza zakresem możliwych wartości dla jego części daty, otrzymasz błąd „poza zakresem”.
SELECT make_time(25, 45, 15.08); Wynik:
ERROR: time field value out of range: 25:45:15.08
Przekazywanie ciągów jako argumentów
Dokumentacja Postgresa stwierdza, że argumenty muszą być liczbami całkowitymi (i podwójnej precyzji w przypadku seconds argument), ale przekazywanie łańcuchów również działa (prawdopodobnie dlatego, że są one niejawnie konwertowane na liczby całkowite), o ile każdy argument znajduje się we właściwym zakresie.
SELECT make_time('7', '45', '15.08'); Wynik:
07:45:15.08
Ponownie możemy użyć pg_type() aby sprawdzić wynikowy typ danych.
SELECT pg_typeof(make_time('7', '45', '15.08')); Wynik:
time without time zone
Jednak nadal musisz upewnić się, że każdy argument będzie prawidłowy po przekonwertowaniu na liczbę całkowitą, w przeciwnym razie otrzymasz błąd.
SELECT make_time('25', '45', '15.08'); Wynik:
ERROR: time field value out of range: 25:45:15.08