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