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.