I MariaDB, TIME_FORMAT()
er en indbygget dato- og tidsfunktion, der formaterer en tidsværdi i henhold til den givne formatstreng.
Det virker på samme måde som DATE_FORMAT()
funktion, bortset fra at formatstrengen kun må indeholde formatspecifikationer for timer, minutter og sekunder.
Det kræver to argumenter; klokkeslættet og formatstrengen.
Syntaks
Syntaksen ser sådan ud:
TIME_FORMAT(time,format)
Hvor time
er tidsværdien og format
er formatstrengen. Se MariaDB Format Strings for en liste over acceptable formatspecifikationer. Som nævnt accepteres kun formatangivelserne for timer, minutter og sekunder. Alle andre værdier returnerer null
.
Eksempel
Her er et eksempel:
SELECT TIME_FORMAT('10:30:45', '%H %i %S');
Resultat:
+--------------------------------------------+| TIME_FORMAT('10:30:45', '%H %i %S') |+-------------------------------- --------+| 10 30 45 |+---------------------------------------------+
Her er det igen, men denne gang giver vi en mere udførlig formatstreng:
SELECT TIME_FORMAT(
'10:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+---------------------------------------------+| Resultat |+----------------------------------------------+| 10 timer, 30 minutter og 45 sekunder |+----------------------------------------------------+
Større timer
TIME
værdier kan være i området '-838:59:59.999999'
til '838:59:59.999999'
.
Derfor kan timedelen være meget højere end 23
:
SELECT TIME_FORMAT(
'810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+----------------------------------------------+| Resultat |+----------------------------------------------+| 810 timer, 30 minutter og 45 sekunder |+---------------------------------------------------- +
Negative tidsværdier
Her er et eksempel med en negativ tidsværdi:
SELECT TIME_FORMAT(
'-810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+----------------------------------------+| Resultat |+----------------------------------------+| -810 timer, 30 minutter og 45 sekunder |+---------------------------------------------------- --+
Udenfor rækkevidde
Angivelse af en tidsværdi uden for området vil dog returnere den øvre grænse for dette område sammen med en advarsel:
SELECT TIME_FORMAT(
'910:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+----------------------------------------------+| Resultat |+----------------------------------------------+| 838 timer, 59 minutter og 59 sekunder |+---------------------------------------------------- +1 række i sæt, 1 advarsel (0,003 sek.)
Lad os tjekke advarslen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------- ----------------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- ---------------+| Advarsel | 1292 | Afkortet forkert tidsværdi:'910:30:45' |+---------+------+------------------- --------------------------+
Ugyldige argumenter
Når ugyldige argumenter sendes, TIME_FORMAT()
returnerer null
med en advarsel:
SELECT TIME_FORMAT('Homer', 'Simpson');
Resultat:
+--------------------------------+| TIME_FORMAT('Homer', 'Simpson') |+----------------------------------------+| NULL |+---------------------------------+1 række i sæt, 1 advarsel (0,009 sek.)Tjek advarslen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------- --+| Niveau | Kode | Besked |+--------+------+-------------------------------------- -+| Advarsel | 1292 | Forkert tidsværdi:'Homer' |+--------+------+------------------------ -------+Ugyldig formatstreng
Formatstrengen må kun indeholde formatspecifikationer for timer, minutter og sekunder. Alle andre formatspecifikationer resulterer i
null
bliver returneret:SELECT TIME_FORMAT('10:30:45', '%M %W');
Resultat:
+----------------------------------------+| TIME_FORMAT('10:30:45', '%M %W') |+------------------------------------- ---+| NULL |+------------------------------------------+Manglende argument
Kalder
TIME_FORMAT()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:SELECT TIME_FORMAT();
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'TIME_FORMAT'Og endnu et eksempel:
SELECT TIME_FORMAT('10:09:10');
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'TIME_FORMAT'