I MariaDB, TIME_FORMAT()
är en inbyggd datum- och tidsfunktion som formaterar ett tidsvärde enligt den givna formatsträngen.
Det fungerar på samma sätt som DATE_FORMAT()
funktion, förutom att formatsträngen bara får innehålla formatspecifikationer för timmar, minuter och sekunder.
Det kräver två argument; tiden och formatsträngen.
Syntax
Syntaxen ser ut så här:
TIME_FORMAT(time,format)
Där time
är tidsvärdet och format
är formatsträngen. Se MariaDB Format Strings för en lista över acceptabla formatspecifikationer. Som nämnts accepteras endast formatspecifikationerna för timmar, minuter och sekunder. Alla andra värden returnerar null
.
Exempel
Här är ett exempel:
SELECT TIME_FORMAT('10:30:45', '%H %i %S');
Resultat:
+---------------------------------------------+| TIME_FORMAT('10:30:45', '%H %i %S') |+-------------------------------- --------+| 10 30 45 |+---------------------------------------------+
Här är den igen, men den här gången tillhandahåller vi en mer utarbetad formatsträng:
SELECT TIME_FORMAT(
'10:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+---------------------------------------------+| Resultat |+----------------------------------------------+| 10 timmar, 30 minuter och 45 sekunder |+----------------------------------------------------+
Större timmar
TIME
värden kan ligga inom intervallet '-838:59:59.999999'
till '838:59:59.999999'
.
Därför kan timdelen vara mycket högre än 23
:
SELECT TIME_FORMAT(
'810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+-----------------------------------------------+| Resultat |+-----------------------------------------------+| 810 timmar, 30 minuter och 45 sekunder |+---------------------------------------------------- +
Negativa tidsvärden
Här är ett exempel med ett negativt tidsvärde:
SELECT TIME_FORMAT(
'-810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+----------------------------------------+| Resultat |+----------------------------------------+| -810 timmar, 30 minuter och 45 sekunder |+---------------------------------------------------- --+
Utanom räckviddstider
Om du tillhandahåller ett tidsvärde utanför intervallet returneras den övre gränsen för intervallet, tillsammans med en varning:
SELECT TIME_FORMAT(
'910:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultat:
+-----------------------------------------------+| Resultat |+-----------------------------------------------+| 838 timmar, 59 minuter och 59 sekunder |+---------------------------------------------------- +1 rad i set, 1 varning (0,003 sek)
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------ ----------------+| Nivå | Kod | Meddelande |+--------+------+-------------------------------------- ---------------+| Varning | 1292 | Trunkerat felaktigt tidsvärde:'910:30:45' |+---------+------+------------------- --------------------------+
Ogiltiga argument
När några ogiltiga argument skickades, TIME_FORMAT()
returnerar null
med en varning:
SELECT TIME_FORMAT('Homer', 'Simpson');
Resultat:
+--------------------------------+| TIME_FORMAT('Homer', 'Simpson') |+----------------------------------------+| NULL |+----------------------------------------+1 rad i set, 1 varning (0,009 sek)Kontrollera varningen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------ --+| Nivå | Kod | Meddelande |+--------+------+-------------------------------------- -+| Varning | 1292 | Felaktigt tidsvärde:'Homer' |+--------+------+------------------------ -------+Ogiltig formatsträng
Formatsträngen får bara innehålla formatspecifikationer för timmar, minuter och sekunder. Alla andra formatspecifikationer resulterar i
null
returneras:SELECT TIME_FORMAT('10:30:45', '%M %W');
Resultat:
+------------------------------------------+| TIME_FORMAT('10:30:45', '%M %W') |+------------------------------------ ---+| NULL |+------------------------------------------+Argument saknas
Anropar
TIME_FORMAT()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:SELECT TIME_FORMAT();
Resultat:
ERROR 1582 (42000):Fel parameterantal i anropet till den inbyggda funktionen 'TIME_FORMAT'Och ett annat exempel:
SELECT TIME_FORMAT('10:09:10');
Resultat:
ERROR 1582 (42000):Fel parameterantal i anropet till den inbyggda funktionen 'TIME_FORMAT'