sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer MAKETIME() i MariaDB

I MariaDB, MAKETIME() er en indbygget dato- og tidsfunktion, der returnerer en tidsværdi baseret på timer, minutter og sekunder, der er angivet som argumenter.

Syntaks

Syntaksen ser sådan ud:

MAKETIME(hour,minute,second)

Eksempel

Her er et eksempel:

SELECT MAKETIME(08, 30, 45);

Resultat:

+----------------------+
| MAKETIME(08, 30, 45) |
+----------------------+
| 08:30:45             |
+----------------------+

Og endnu en:

SELECT MAKETIME(23, 8, 1);

Resultat:

+--------------------+
| MAKETIME(23, 8, 1) |
+--------------------+
| 23:08:01           |
+--------------------+

Område

Hvis hour argumentet er uden for området -838 til 838 , er værdien afkortet med en advarsel.

Hvis minute eller second argumenter er uden for området 0 til 59 , resultatet er null , og en advarsel vises (MariaDB-dokumentationen angiver, at området er 0 til 60 , men dette er ikke tilfældet i mine tests. MariaDB-dokumentationen angiver desuden, at området for MariaDB-tidsværdier er '-838:59:59.999999' til '838:59:59.999999' ).

Uanset hvad, her er et eksempel på et tidspunkt med værdier, der er i den øvre ende af deres accepterede interval:

SELECT MAKETIME(838, 59, 59.999999);

Resultat:

+------------------------------+
| MAKETIME(838, 59, 59.999999) |
+------------------------------+
| 838:59:59.999999             |
+------------------------------+

Disse værdier var stadig inden for deres accepterede område, og vi fik derfor en gyldig tidsværdi.

Ugyldige minutter og sekunder

Her er, hvad der sker, når vi går over det accepterede interval for minute og second argumenter:

SELECT 
    MAKETIME(00, 60, 00),
    MAKETIME(00, 00, 60);

Resultat:

+----------------------+----------------------+
| MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) |
+----------------------+----------------------+
| NULL                 | NULL                 |
+----------------------+----------------------+
1 row in set, 1 warning (0.001 sec)

Resultatet er null for begge med en advarsel.

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect seconds value: '60' |
+---------+------+-----------------------------------------+

Ugyldige timer

Lad os nu se, hvad der sker, når vi går uden for det accepterede interval i hour argument:

SELECT MAKETIME(900, 00, 00);

Resultat:

+-----------------------+
| MAKETIME(900, 00, 00) |
+-----------------------+
| 838:59:59             |
+-----------------------+
1 row in set, 1 warning (0.000 sec)

I dette scenarie returneres en tidsværdi med timer, minutter og sekunder klippet til deres øvre område. En advarsel returneres også.

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '900:00:00' |
+---------+------+---------------------------------------------+

Manglende argument

Kalder MAKETIME() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT MAKETIME();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'

Og endnu et eksempel:

SELECT MAKETIME( 12, 1 );

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'

Lav en date

Se også SEC_TO_TIME() til at konstruere en datoværdi ud fra et antal sekunder.

Se også MAKEDATE() for at konstruere en datoværdi fra dens år og dag i året.


  1. Kalder du Oracles lagrede procedure fra C#?

  2. MySQL Tutorial – Forstå sekunderne bag Master Value

  3. Hierarkisk SQL-spørgsmål

  4. Dublerede dataproblemer, og hvordan man løser dem