sql >> Database >  >> RDS >> MariaDB

Hoe TIME_FORMAT() werkt in MariaDB

In MariaDB, TIME_FORMAT() is een ingebouwde datum- en tijdfunctie die een tijdwaarde opmaakt volgens de gegeven notatiereeks.

Het werkt vergelijkbaar met de DATE_FORMAT() functie, behalve dat de formaatreeks alleen formaatspecificaties voor uren, minuten en seconden mag bevatten.

Het vereist twee argumenten; de tijd en de notatiereeks.

Syntaxis

De syntaxis gaat als volgt:

TIME_FORMAT(time,format)

Waar time is de tijdwaarde en format is de opmaakreeks. Zie MariaDB Format Strings voor een lijst met acceptabele formaatspecificaties. Zoals vermeld, worden alleen de formaatspecificaties voor uren, minuten en seconden geaccepteerd. Alle andere waarden retourneren null .

Voorbeeld

Hier is een voorbeeld:

SELECT TIME_FORMAT('10:30:45', '%H %i %S');

Resultaat:

+-------------------------------------+
| TIME_FORMAT('10:30:45', '%H %i %S') |
+-------------------------------------+
| 10 30 45                            |
+-------------------------------------+

Hier is het weer, maar deze keer bieden we een meer uitgebreide opmaakreeks:

SELECT TIME_FORMAT(
    '10:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultaat:

+--------------------------------------+
| Result                               |
+--------------------------------------+
| 10 hours, 30 minutes, and 45 seconds |
+--------------------------------------+

Grotere uren

TIME waarden kunnen in het bereik liggen '-838:59:59.999999' naar '838:59:59.999999' .

Daarom kan het uurgedeelte veel hoger zijn dan 23 :

SELECT TIME_FORMAT(
    '810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultaat:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 810 hours, 30 minutes, and 45 seconds |
+---------------------------------------+

Negatieve tijdwaarden

Hier is een voorbeeld met een negatieve tijdwaarde:

SELECT TIME_FORMAT(
    '-810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultaat:

+----------------------------------------+
| Result                                 |
+----------------------------------------+
| -810 hours, 30 minutes, and 45 seconds |
+----------------------------------------+

Tijden buiten bereik

Als u echter een tijdwaarde buiten het bereik opgeeft, wordt de bovengrens van dat bereik geretourneerd, samen met een waarschuwing:

SELECT TIME_FORMAT(
    '910:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultaat:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 838 hours, 59 minutes, and 59 seconds |
+---------------------------------------+
1 row in set, 1 warning (0.003 sec)

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '910:30:45' |
+---------+------+---------------------------------------------+

Ongeldige argumenten

Bij het doorgeven van ongeldige argumenten, TIME_FORMAT() retourneert null met een waarschuwing:

SELECT TIME_FORMAT('Homer', 'Simpson');

Resultaat:

+---------------------------------+
| TIME_FORMAT('Homer', 'Simpson') |
+---------------------------------+
| NULL                            |
+---------------------------------+
1 row in set, 1 warning (0.009 sec)

Controleer de waarschuwing:

SHOW WARNINGS;

Resultaat:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Ongeldige notatietekenreeks

De opmaakreeks mag alleen opmaakspecificaties voor uren, minuten en seconden bevatten. Alle andere formaatspecificaties resulteren in null wordt geretourneerd:

SELECT TIME_FORMAT('10:30:45', '%M %W');

Resultaat:

+----------------------------------+
| TIME_FORMAT('10:30:45', '%M %W') |
+----------------------------------+
| NULL                             |
+----------------------------------+

Ontbrekend argument

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

SELECT TIME_FORMAT();

Resultaat:

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

En nog een voorbeeld:

SELECT TIME_FORMAT('10:09:10');

Resultaat:

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

  1. Meerdere beperkingen in tabel:Hoe krijg ik alle schendingen?

  2. Haal de vorige en volgende rij op uit rijen die zijn geselecteerd met (WHERE) voorwaarden

  3. Dapper gebruiken met Oracle-opgeslagen procedures die cursors retourneren

  4. MySQLi gebruiken om gegevens in een database in te voegen