W PostgreSQL funkcja make_date()
funkcja umożliwia utworzenie daty z oddzielnych pól roku, miesiąca i dnia.
Każda część daty jest podana jako liczba całkowita , a wynik jest zwracany jako data .
Składnia
Funkcja ma następującą składnię:
make_date(year int, month int, day int)
Gdzie year
, month
i day
są liczbami całkowitymi reprezentującymi rok, miesiąc i dzień daty.
Przykład
Oto podstawowy przykład do zademonstrowania.
SELECT make_date(2020, 07, 25);
Wynik:
2020-07-25
I możemy sprawdzić, czy zwraca typ danych data z następującym zapytaniem.
SELECT pg_typeof(make_date(2020, 07, 25));
Wynik:
date
pg_typeof()
funkcja zwraca typ danych swojego argumentu, więc przekazałem make_date()
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_date(2020, 17, 25);
Wynik:
ERROR: date field value out of range: 2020-17-25
Oto znowu z miesiącem 00:
SELECT make_date(2020, 00, 25);
Wynik:
date field value out of range: 2020-00-25
Przekazywanie ciągów jako argumentów
Dokumentacja Postgresa stwierdza, że argumenty muszą być liczbami całkowitymi, ale przekazywanie ciągów wydaje się 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_date('2020', '07', '25');
Wynik:
2020-07-25
Ponownie możemy użyć pg_type()
aby sprawdzić, czy wynik jest w rzeczywistości datą typ danych.
SELECT pg_typeof(make_date('2020', '07', '25'));
Wynik:
date
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, taki jak następujący.
SELECT make_date(2020, 'July', 25);
Wynik:
ERROR: invalid input syntax for type integer: "July" LINE 1: SELECT make_date(2020, 'July', 25);