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

Wie make_time() in PostgreSQL funktioniert

In PostgreSQL die make_time() Mit dieser Funktion können Sie aus den Stunden-, Minuten- und Sekundenfeldern eine Uhrzeit erstellen.

Syntax

Die Funktion hat folgende Syntax:

make_time(hour int, min int, sec double precision)

Wobei hour ist der Stundenteil, min ist der Minutenteil und sec ist der Sekundenteil.

Die Stunde und die Minuten werden als Ganzzahl angegeben , werden die Sekunden mit doppelter Genauigkeit angegeben .

Das Ergebnis wird als Zeit zurückgegeben . Genauer gesagt wird es als Zeit ohne Zeitzone zurückgegeben .

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung.

SELECT make_time(7, 45, 15.08);

Ergebnis:

07:45:15.08

Und wir können den Rückgabetyp mit der folgenden Abfrage überprüfen.

SELECT pg_typeof(make_time(7, 45, 15.08));

Ergebnis:

time without time zone

Der pg_typeof() Die Funktion gibt den Datentyp ihres Arguments zurück, also habe ich make_time() ü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_time(25, 45, 15.08);

Ergebnis:

ERROR: time field value out of range: 25:45:15.08

Strings als Argumente übergeben

Die Postgres-Dokumentation besagt, dass die Argumente ganze Zahlen sein müssen (und doppelte Genauigkeit im Fall von seconds Argument), aber das Übergeben von Zeichenfolgen funktioniert auch (wahrscheinlich, weil sie implizit in Ganzzahlen konvertiert werden), solange jedes Argument innerhalb seines richtigen Bereichs liegt.

SELECT make_time('7', '45', '15.08');

Ergebnis:

07:45:15.08

Wieder können wir pg_type() verwenden um den resultierenden Datentyp zu überprüfen.

SELECT pg_typeof(make_time('7', '45', '15.08'));

Ergebnis:

time without time zone

Sie müssen jedoch immer noch sicherstellen, dass jedes Argument gültig ist, sobald es in eine Ganzzahl umgewandelt wurde, andernfalls erhalten Sie eine Fehlermeldung.

SELECT make_time('25', '45', '15.08');

Ergebnis:

ERROR: time field value out of range: 25:45:15.08