I MySQL er DATE_FORMAT()
funktionen giver dig mulighed for at formatere dato og klokkeslæt.
Her er et eksempel:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Resultat:
Saturday, 01 December 2018
I dette eksempel, %W
er for ugedagsnavnet, %d
er for dagen i måneden, %M
er for måned og %Y
er for år. Der er mange flere formatspecifikationer tilgængelige, som gør det muligt for dig at angive et præcist format for datoer såvel som tidskomponenten.
Formatere tidskomponenten
Her er et eksempel på formatering af tidskomponenten:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Resultat:
11:03:15 AM
I dette eksempel, %p
bruges til at vise enten AM eller PM, alt efter hvad der er tilfældet.
Du kan selvfølgelig kombinere dem sammen for at formatere både dato og klokkeslæt på én gang:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Resultat:
11:03:15 AM, Saturday, 01 December 2018
Formatering med en dato/tidsfunktion
Ofte vil du gerne bruge DATE_FORMAT()
sammen med en anden dato/tidsfunktion. For eksempel kan du bruge det sammen med CURDATE()
for at returnere den aktuelle dato, pænt formateret:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
Resultat:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
Du kan også gøre dette med NOW()
funktion, hvis du har brug for tid:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
Resultater:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
FUNKTIONEN TIME_FORMAT()
MySQL har også en TIME_FORMAT()
funktion, der kan bruges til at formatere tiden. Denne funktion fungerer på samme måde som DATE_FORMAT()
bortset fra at TIME_FORMAT()
accepterer kun formatspecifikationer for timer, minutter, sekunder og mikrosekunder.
Eksempel:
SET @time = '07:35:10'; SELECT TIME_FORMAT(@time, '%H') AS Hour, TIME_FORMAT(@time, '%i') AS Minute, TIME_FORMAT(@time, '%s') As Seconds, TIME_FORMAT(@time, '%p') AS 'AM or PM';
Resultater:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
STR_TO_DATE()-funktionen
STR_TO_DATE()
funktion er det omvendte af DATE_FORMAT()
fungere. Det giver dig mulighed for at angive en streng, der skal formateres som en dato. Den accepterer to parametre; strengen og formatet.
Her er et eksempel:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
Resultat:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
Sådan finder du det korrekte datoformat
MySQL har en praktisk lille funktion kaldet GET_FORMAT()
. Denne funktion hjælper dig med at finde det korrekte format, du skal bruge, når du bruger DATE_FORMAT()
funktionen og/eller STR_TO_DATE()
funktion .
Sådan fungerer det:
SELECT GET_FORMAT(DATE, 'USA');
Dette resulterer i følgende:
%m.%d.%Y
Hvilket fortæller os den formatstreng, vi skal bruge, når vi formaterer en dato med DATE_FORMAT()
fungere. For eksempel kunne vi tage resultaterne fra dette eksempel og anvende dem på DATE_FORMAT()
funktion:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
Og vi ender med det ønskede resultat:
05.04.2018
Du kan også sende GET_FORMAT()
direkte til DATE_FORMAT()
hvis du foretrækker det.
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
Resultat:
05.04.2018
Under alle omstændigheder, nedenfor er eksempler med forskellige muligheder.
Dato
SELECT GET_FORMAT(DATE, 'USA') AS USA, GET_FORMAT(DATE, 'JIS') AS JIS, GET_FORMAT(DATE, 'ISO') AS ISO, GET_FORMAT(DATE, 'EUR') AS EUR, GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;
Resultat:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Dato og klokkeslæt
SELECT GET_FORMAT(DATETIME, 'USA') AS USA, GET_FORMAT(DATETIME, 'JIS') AS JIS, GET_FORMAT(DATETIME, 'ISO') AS ISO, GET_FORMAT(DATETIME, 'EUR') AS EUR, GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;
Resultat:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
Tid
SELECT GET_FORMAT(TIME, 'USA') AS USA, GET_FORMAT(TIME, 'JIS') AS JIS, GET_FORMAT(TIME, 'ISO') AS ISO, GET_FORMAT(TIME, 'EUR') AS EUR, GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL;
Resultat:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+