sql >> Database >  >> RDS >> PostgreSQL

Hoe make_time() werkt in PostgreSQL

In PostgreSQL, de make_time() Met deze functie kunt u een tijd maken op basis van de velden voor uren, minuten en seconden.

Syntaxis

De functie heeft de volgende syntaxis:

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

Waar hour is het uurgedeelte, min is het minutengedeelte, en sec is het tweede deel.

Het uur en de minuten worden weergegeven als een geheel getal , de seconden worden geleverd als dubbele precisie .

Het resultaat wordt geretourneerd als een tijd . Om precies te zijn, het wordt geretourneerd als tijd zonder tijdzone .

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

SELECT make_time(7, 45, 15.08);

Resultaat:

07:45:15.08

En we kunnen het retourtype verifiëren met de volgende vraag.

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

Resultaat:

time without time zone

De pg_typeof() functie retourneert het gegevenstype van zijn argument, en dus heb ik make_time() . doorgegeven als het argument..

Buiten bereik

Als een van de argumenten buiten het bereik van de mogelijke waarden voor het datumgedeelte valt, krijgt u de foutmelding 'buiten bereik'.

SELECT make_time(25, 45, 15.08);

Resultaat:

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

Snaren doorgeven als argument

De Postgres-documentatie stelt dat de argumenten gehele getallen moeten zijn (en dubbele precisie in het geval van de seconds argument), maar het doorgeven van strings werkt ook (waarschijnlijk omdat ze impliciet worden geconverteerd naar gehele getallen), zolang elk argument zich binnen het juiste bereik bevindt.

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

Resultaat:

07:45:15.08

Opnieuw kunnen we pg_type() . gebruiken om het resulterende gegevenstype te controleren.

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

Resultaat:

time without time zone

U moet er echter nog steeds voor zorgen dat elk argument geldig is nadat het is geconverteerd naar een geheel getal, anders krijgt u een foutmelding.

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

Resultaat:

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

  1. Verward over UPDLOCK, HOLDLOCK

  2. MySQL gebruiken met Deno en Oak

  3. Datumkolomberekening in PostgreSQL-query

  4. ClusterControl - Geavanceerd back-upbeheer - mariabackup Deel I