MariaDB innehåller många funktioner som låter dig returnera värden för tid och datum i en mängd olika format.
Två funktioner låter dig formatera tidsdelen med en 12-timmarsklocka, med AM/PM-beteckningen DATE_FORMAT()
och TIME_FORMAT()
.
Det finns många formatspecifikationer som kan användas med dessa funktioner, men bara ett par som returnerar AM/PM-beteckningen.
%r
Formatspecifikation
%r
formatspecifikationen används för att formatera tiden i 12-timmarsformat, följt av AM/PM-beteckningen.
Exempel:
SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');
Resultat:
+------------------------------------------+ | DATE_FORMAT('2030-03-10 18:10:37', '%r') | +------------------------------------------+ | 06:10:37 PM | +------------------------------------------+
Den resulterande tiden visas som om den hade formaterats med följande formatsträng:'%I:%i:%S %p'
.
Uppenbarligen, om det returnerar AM
eller PM
beror på den faktiska tiden. Tider före 12:00:00
returnera AM
och gånger efter det returnerar PM
.
Här är vad som händer om vi ändrar tiden före 12:00:00
:
SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');
Resultat:
+------------------------------------------+ | DATE_FORMAT('2030-03-10 06:10:37', '%r') | +------------------------------------------+ | 06:10:37 AM | +------------------------------------------+
Båda DATE_FORMAT()
och TIME_FORMAT()
acceptera %r
formatspecifikator, så vi kan använda samma formatspecifikator med TIME_FORMAT()
funktion:
SELECT TIME_FORMAT('06:10:37', '%r');
Resultat:
+-------------------------------+ | TIME_FORMAT('06:10:37', '%r') | +-------------------------------+ | 06:10:37 AM | +-------------------------------+
TIME_FORMAT()
accepterar tidsvärden såväl som datetime-värden, medan DATE_FORMAT()
accepterar endast datum- och datetime-värden. Men TIME_FORMAT()
accepterar endast formatspecifikationer för timmar minuter och sekunder. Ser som %r
returnerar timmar, minuter och sekunder, detta accepteras också.
%p
Formatspecifikation
%p
formatspecificator är en mer specifik formatspecificator som endast används för att representera AM/PM-designatorn. Det används normalt tillsammans med andra formatspecifikationer för att returnera tiden i ett anpassat format.
Som nämnts, %r
formatspecificeraren formaterar tiden som om den hade formaterats med följande formatsträng:'%I:%i:%S %p'
.
Låt oss använda den strängen uttryckligen:
SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');
Resultat:
+----------------------------------------+ | TIME_FORMAT('18:10:37', '%I:%i:%S %p') | +----------------------------------------+ | 06:10:37 PM | +----------------------------------------+
Så vi får samma resultat som när vi använder %r
formatspecifikator.
En fördel med att använda denna metod är dock att vi kan konstruera resultatet på vårt eget sätt.
Till exempel:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p');
Resultat:
+-------------------------------------+ | TIME_FORMAT('18:10:37', '%l:%i %p') | +-------------------------------------+ | 6:10 PM | +-------------------------------------+
Här använde vi %l
för att returnera timdelen utan inledande nolla. Vi har också utelämnat sekunderdelen av tiden.
Se MariaDB Format Strings för en fullständig lista över formatspecifikationer som kan användas med dessa funktioner.