sql >> Database >  >> RDS >> MariaDB

Hoe MAKETIME() werkt in MariaDB

In MariaDB, MAKETIME() is een ingebouwde datum- en tijdfunctie die een tijdwaarde retourneert, gebaseerd op de uren, minuten en seconden die als argumenten worden opgegeven.

Syntaxis

De syntaxis gaat als volgt:

MAKETIME(hour,minute,second)

Voorbeeld

Hier is een voorbeeld:

SELECT MAKETIME(08, 30, 45);

Resultaat:

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

En nog een:

SELECT MAKETIME(23, 8, 1);

Resultaat:

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

Bereiken

Als het hour argument valt buiten het bereik -838 tot 838 , wordt de waarde afgekapt met een waarschuwing.

Als de minute of second argumenten vallen buiten het bereik 0 tot 59 , het resultaat is null , en er wordt een waarschuwing weergegeven (in de MariaDB-documentatie staat dat het bereik 0 is tot 60 , maar dit is niet het geval in mijn tests. Verder stelt de MariaDB-documentatie ook dat het bereik voor MariaDB-tijdwaarden '-838:59:59.999999' is naar '838:59:59.999999' ).

Hoe dan ook, hier is een voorbeeld van een tijd met waarden die zich aan de bovenkant van hun geaccepteerde bereik bevinden:

SELECT MAKETIME(838, 59, 59.999999);

Resultaat:

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

Deze waarden waren nog steeds binnen hun geaccepteerde bereik, en dus kregen we een geldige tijdswaarde.

Ongeldige minuten en seconden

Dit is wat er gebeurt als we het geaccepteerde bereik voor de minute overschrijden en second argumenten:

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

Resultaat:

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

Het resultaat is null voor beide, met een waarschuwing.

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

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

Ongeldige uren

Laten we nu eens kijken wat er gebeurt als we buiten het geaccepteerde bereik gaan voor het hour argument:

SELECT MAKETIME(900, 00, 00);

Resultaat:

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

In dit scenario wordt een tijdwaarde geretourneerd met uren, minuten en seconden afgekapt tot hun bovenste bereik. Er wordt ook een waarschuwing geretourneerd.

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

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

Ontbrekend argument

Bellen MAKETIME() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT MAKETIME();

Resultaat:

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

En nog een voorbeeld:

SELECT MAKETIME( 12, 1 );

Resultaat:

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

Maak een afspraakje

Zie ook SEC_TO_TIME() voor het construeren van een datumwaarde van een aantal seconden.

Zie ook MAKEDATE() voor het construeren van een datumwaarde van het jaar en de dag van het jaar.


  1. Android:Bulk Insert, wanneer InsertHelper is verouderd

  2. Snapshots van SQL Server-database -1

  3. Typ conversie. Wat moet ik doen met een PostgreSQL OID-waarde in libpq in C?

  4. Hoe DbContext configureren om te werken met Oracle ODP.Net en EF CodeFirst?