MariaDB indeholder mange funktioner, der giver dig mulighed for at returnere værdier for tid og dato i en række forskellige formater.
To funktioner giver dig mulighed for at formatere tidsdelen ved hjælp af et 12-timers ur, med AM/PM-betegnelsen DATE_FORMAT()
og TIME_FORMAT()
.
Der er mange formatspecifikationer, der kan bruges med disse funktioner, men kun et par, der returnerer AM/PM-designatoren.
%r
Formatspecifikation
%r
formatangivelsen bruges til at formatere tiden i 12 timers format, efterfulgt af AM/PM-designatoren.
Eksempel:
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 resulterende tid vises, som om den var blevet formateret ved hjælp af følgende formatstreng:'%I:%i:%S %p'
.
Det er klart, om det returnerer AM
eller PM
afhænger af det faktiske tidspunkt. Tider før 12:00:00
returner AM
og tider efter det returnerer PM
.
Her er, hvad der sker, hvis vi ændrer tidspunktet, der kommer før 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 | +------------------------------------------+
Begge DATE_FORMAT()
og TIME_FORMAT()
accepter %r
formatspecifikation, så vi kan bruge den samme formatspecifikation med TIME_FORMAT()
funktion:
SELECT TIME_FORMAT('06:10:37', '%r');
Resultat:
+-------------------------------+ | TIME_FORMAT('06:10:37', '%r') | +-------------------------------+ | 06:10:37 AM | +-------------------------------+
TIME_FORMAT()
accepterer tidsværdier såvel som datetime-værdier, hvorimod DATE_FORMAT()
accepterer kun dato- og datotidsværdier. Dog TIME_FORMAT()
accepterer kun formatspecifikationer i timer, minutter og sekunder. Ses som %r
returnerer timer, minutter og sekunder, dette accepteres også.
%p
Formatspecifikation
%p
formatspecificator er en mere specifik formatspecificator, der udelukkende bruges til at repræsentere AM/PM-designatoren. Det bruges normalt sammen med andre formatspecifikationer for at returnere tiden i et brugerdefineret format.
Som nævnt er %r
formatspecificator formaterer tiden, som om den var blevet formateret ved hjælp af følgende formatstreng:'%I:%i:%S %p'
.
Lad os bruge den streng eksplicit:
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 det samme resultat, som når vi bruger %r
formatspecifikation.
En fordel ved at bruge denne metode er dog, at vi kan konstruere outputtet på vores egen tilpassede måde.
For eksempel:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p');
Resultat:
+-------------------------------------+ | TIME_FORMAT('18:10:37', '%l:%i %p') | +-------------------------------------+ | 6:10 PM | +-------------------------------------+
Her brugte vi %l
for at returnere timedelen uden det indledende nul. Vi har også udeladt sekunderdelen af tiden.
Se MariaDB Format Strings for en komplet liste over formatspecifikationer, der kan bruges med disse funktioner.