sql >> Databasteknik >  >> RDS >> MariaDB

Hur MAKETIME() fungerar i MariaDB

I MariaDB, MAKETIME() är en inbyggd datum- och tidsfunktion som returnerar ett tidsvärde, baserat på timmar, minuter och sekunder som anges som argument.

Syntax

Syntaxen ser ut så här:

MAKETIME(hour,minute,second)

Exempel

Här är ett exempel:

SELECT MAKETIME(08, 30, 45);

Resultat:

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

Och en till:

SELECT MAKETIME(23, 8, 1);

Resultat:

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

Områden

Om hour argumentet är utanför intervallet -838 till 838 , trunkeras värdet med en varning.

Om minute eller second argumenten ligger utanför intervallet 0 till 59 , resultatet är null , och en varning visas (MariaDB-dokumentationen anger att intervallet är 0 till 60 , men detta är inte fallet i mina tester. MariaDB-dokumentationen anger vidare att intervallet för MariaDB-tidsvärden är '-838:59:59.999999' till '838:59:59.999999' ).

Hur som helst, här är ett exempel på en tid med värden som ligger i den övre delen av det accepterade intervallet:

SELECT MAKETIME(838, 59, 59.999999);

Resultat:

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

Dessa värden låg fortfarande inom det godkända intervallet, så vi fick ett giltigt tidsvärde.

Ogiltiga minuter och sekunder

Här är vad som händer när vi går över det accepterade intervallet för minute och second argument:

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 är null för båda, med en varning.

Låt oss kolla varningen:

SHOW WARNINGS;

Resultat:

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

Ogiltiga timmar

Låt oss nu se vad som händer när vi går utanför det accepterade intervallet under 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 det här scenariot returneras ett tidsvärde med timmar, minuter och sekunder klippta till deras övre intervall. En varning returneras också.

Låt oss kolla varningen:

SHOW WARNINGS;

Resultat:

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

Argument saknas

Anropar MAKETIME() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT MAKETIME();

Resultat:

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

Och ett annat exempel:

SELECT MAKETIME( 12, 1 );

Resultat:

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

Skapa ett datum

Se även SEC_TO_TIME() för att konstruera ett datumvärde från ett antal sekunder.

Se även MAKEDATE() för att konstruera ett datumvärde från dess år och dag på året.


  1. Hur man använder främmande nyckel i oracle

  2. INTE IN vs INTE FINNS

  3. pg_dump postgres-databas från fjärrserver när port 5432 är blockerad

  4. IF-THEN-ELSE-satser i postgresql