sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur make_time() fungerar i PostgreSQL

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

  1. Hur stoppar/dödar man en fråga i postgresql?

  2. PL/SQL Gateway i R11i

  3. Implementera Secure Multicloud MySQL-replikering på AWS och GCP med VPN

  4. ORA-02287:sekvensnummer är inte tillåtet här