PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak make_date() działa w PostgreSQL

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);

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Transakcje nie działają dla mojej bazy danych MySQL

  2. Dlaczego pg_restore zwraca pomyślnie, ale w rzeczywistości nie przywraca mojej bazy danych?

  3. składnia klucza obcego postgresql

  4. Przyznać uprawnienia do przyszłych tabel w PostgreSQL?

  5. GROUP BY w klauzuli UPDATE FROM