sql >> Databasteknik >  >> RDS >> MariaDB

Hur TIME_FORMAT() fungerar i MariaDB

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'

  1. SQL Developer 4.0 släppt

  2. Flera planer för en identisk fråga

  3. korrekt vilolägeskommentar för byte[]

  4. Hämta det senast infogade rad-ID (med SQL-sats)