PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie make_date() in PostgreSQL funktioniert

In PostgreSQL das make_date() Mit dieser Funktion können Sie ein Datum aus den separaten Feldern für Jahr, Monat und Tag erstellen.

Jeder Datumsteil wird als Ganzzahl bereitgestellt , und das Ergebnis wird als Datum zurückgegeben .

Syntax

Die Funktion hat folgende Syntax:

make_date(year int, month int, day int)

Wobei year , month , und day sind Ganzzahlen, die das Jahr, den Monat und den Tag des Datums darstellen.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung.

SELECT make_date(2020, 07, 25);

Ergebnis:

2020-07-25

Und wir können überprüfen, ob es den Datentyp date zurückgibt mit der folgenden Abfrage.

SELECT pg_typeof(make_date(2020, 07, 25));

Ergebnis:

date

Der pg_typeof() Die Funktion gibt den Datentyp ihres Arguments zurück, also habe ich make_date() übergeben als Argument..

Außer Reichweite

Wenn eines der Argumente außerhalb des Bereichs der möglichen Werte für seinen Datumsteil liegt, erhalten Sie einen „Out of Range“-Fehler.

SELECT make_date(2020, 17, 25);

Ergebnis:

ERROR: date field value out of range: 2020-17-25

Hier ist es wieder mit einem Monat von 00:

SELECT make_date(2020, 00, 25);

Ergebnis:

date field value out of range: 2020-00-25

Strings als Argumente übergeben

Die Postgres-Dokumentation besagt, dass die Argumente Ganzzahlen sein müssen, aber das Übergeben von Zeichenfolgen scheint zu funktionieren (wahrscheinlich, weil sie implizit in Ganzzahlen konvertiert werden), solange jedes Argument innerhalb seines richtigen Bereichs liegt.

SELECT make_date('2020', '07', '25');

Ergebnis:

2020-07-25

Wieder können wir pg_type() verwenden um zu überprüfen, ob das Ergebnis tatsächlich ein Datum ist Datentyp.

SELECT pg_typeof(make_date('2020', '07', '25'));

Ergebnis:

date

Sie müssen jedoch immer noch sicherstellen, dass jedes Argument gültig ist, sobald es in eine Ganzzahl konvertiert wurde, andernfalls erhalten Sie einen Fehler wie den folgenden.

SELECT make_date(2020, 'July', 25);

Ergebnis:

ERROR: invalid input syntax for type integer: "July"
LINE 1: SELECT make_date(2020, 'July', 25);