I PostgreSQL, make_time() funktionen låter dig skapa en tid från dess fält för timme, minuter och sekunder.
Syntax
Funktionen har följande syntax:
make_time(hour int, min int, sec double precision)
Där hour är timdelen, min är minutdelen och sec är den andra delen.
Timmen och minuterna anges som ett heltal , sekunderna tillhandahålls som dubbel precision .
Resultatet returneras som en tid . Mer exakt, det returneras som tid utan tidszon .
Exempel
Här är ett grundläggande exempel att visa.
SELECT make_time(7, 45, 15.08); Resultat:
07:45:15.08
Och vi kan verifiera returtypen med följande fråga.
SELECT pg_typeof(make_time(7, 45, 15.08)); Resultat:
time without time zone
pg_typeof() funktion returnerar datatypen för dess argument, och så jag skickade make_time() som argument...
Utanför räckvidd
Om något av argumenten ligger utanför intervallet för de möjliga värdena för dess datumdel, kommer du att få ett "utom intervall"-felet.
SELECT make_time(25, 45, 15.08); Resultat:
ERROR: time field value out of range: 25:45:15.08
Att skicka strängar som argument
Postgres-dokumentationen säger att argumenten måste vara heltal (och dubbel precision i fallet med seconds argument), men att skicka strängar fungerar också (förmodligen för att de implicit omvandlas till heltal), så länge som varje argument är inom sitt rätta intervall.
SELECT make_time('7', '45', '15.08'); Resultat:
07:45:15.08
Återigen kan vi använda pg_type() för att kontrollera den resulterande datatypen.
SELECT pg_typeof(make_time('7', '45', '15.08')); Resultat:
time without time zone
Du måste dock fortfarande se till att varje argument är giltigt när det konverterats till ett heltal, annars får du ett felmeddelande.
SELECT make_time('25', '45', '15.08'); Resultat:
ERROR: time field value out of range: 25:45:15.08