sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan fungerer make_time() i PostgreSQL

I PostgreSQL er make_time() funktionen giver dig mulighed for at oprette en tid fra felterne time, minutter og sekunder.

Syntaks

Funktionen har følgende syntaks:

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

Hvor hour er timedelen, min er minutterdelen og sec er sekunddelen.

Time og minutter er angivet som et heltal , sekunderne leveres som dobbelt præcision .

Resultatet returneres som en tid . Mere præcist returneres det som tid uden tidszone .

Eksempel

Her er et grundlæggende eksempel at demonstrere.

SELECT make_time(7, 45, 15.08);

Resultat:

07:45:15.08

Og vi kan bekræfte returtypen med følgende forespørgsel.

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

Resultat:

time without time zone

pg_typeof() funktion returnerer datatypen for dets argument, og så jeg sendte make_time() som argumentet..

Udenfor rækkevidde

Hvis nogen af ​​argumenterne er uden for rækkevidden af ​​de mulige værdier for dens datodel, får du fejlen "uden for område".

SELECT make_time(25, 45, 15.08);

Resultat:

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

At sende strenge som argumenter

Postgres-dokumentationen angiver, at argumenterne skal være heltal (og dobbelt præcision i tilfælde af seconds argument), men videregivelse af strenge virker også (sandsynligvis fordi de implicit konverteres til heltal), så længe hvert argument er inden for dets rette område.

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

Resultat:

07:45:15.08

Igen kan vi bruge pg_type() for at kontrollere den resulterende datatype.

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

Resultat:

time without time zone

Du skal dog stadig sikre dig, at hvert argument er gyldigt, når det først er konverteret til et heltal, ellers får du en fejl.

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

Resultat:

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

  1. MySQL IF() Funktion forklaret

  2. Skift til en partition i SQL Server (T-SQL)

  3. Infinite loop CTE med OPTION (maxrecursion 0)

  4. Opdel datointerval i én række om måneden i sql server