In MySQL is de DATE_FORMAT()
functie stelt u in staat om de datum en tijd te formatteren.
Hier is een voorbeeld:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Resultaat:
Saturday, 01 December 2018
In dit voorbeeld %W
is voor de naam van de weekdag, %d
is voor de dag van de maand, %M
is voor maand, en %Y
is voor Jaar. Er zijn veel meer formaatspecificaties beschikbaar waarmee u een nauwkeurig formaat voor datums en de tijdcomponent kunt specificeren.
De tijdcomponent opmaken
Hier is een voorbeeld van het opmaken van de tijdcomponent:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Resultaat:
11:03:15 AM
In dit voorbeeld, %p
wordt gebruikt om AM of PM weer te geven, afhankelijk van wat het geval is.
Je kunt ze natuurlijk combineren om zowel de datum als de tijd in één keer op te maken:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Resultaat:
11:03:15 AM, Saturday, 01 December 2018
Formatteren met een datum/tijd-functie
Vaak wil je DATE_FORMAT()
. gebruiken samen met een andere datum/tijd-functie. U kunt het bijvoorbeeld samen met CURDATE()
. gebruiken om de huidige datum terug te geven, mooi opgemaakt:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
Resultaat:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
Je kunt dit ook doen met de NOW()
functie als je de tijd nodig hebt:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
Resultaten:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
De TIME_FORMAT()-functie
MySQL heeft ook een TIME_FORMAT()
functie die kan worden gebruikt om de tijd te formatteren. Deze functie werkt vergelijkbaar met DATE_FORMAT()
behalve dat TIME_FORMAT()
accepteert alleen formaatspecificaties voor uren, minuten, seconden en microseconden.
Voorbeeld:
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';
Resultaten:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
De STR_TO_DATE() Functie
De STR_TO_DATE()
functie is het omgekeerde van de DATE_FORMAT()
functie. Hiermee kunt u een tekenreeks opgeven die als datum moet worden opgemaakt. Het accepteert twee parameters; de tekenreeks en het formaat.
Hier is een voorbeeld:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
Resultaat:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
Het juiste datumformaat vinden
MySQL heeft een handige kleine functie genaamd GET_FORMAT()
. Deze functie helpt je bij het vinden van het juiste formaat om te gebruiken bij het gebruik van de DATE_FORMAT()
functie en/of de STR_TO_DATE()
functie .
Zo werkt het:
SELECT GET_FORMAT(DATE, 'USA');
Dit resulteert in het volgende:
%m.%d.%Y
Dat vertelt ons de opmaakreeks die we moeten gebruiken bij het opmaken van een datum met de DATE_FORMAT()
functie. We kunnen bijvoorbeeld de resultaten uit dat voorbeeld nemen en deze toepassen op de DATE_FORMAT()
functie:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
En we zouden eindigen met het gewenste resultaat:
05.04.2018
Je kunt ook GET_FORMAT()
pass doorgeven rechtstreeks naar DATE_FORMAT()
als je wilt.
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
Resultaat:
05.04.2018
Hieronder staan in ieder geval voorbeelden met verschillende opties.
Datum
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;
Resultaat:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Datum
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;
Resultaat:
+-------------------+-------------------+-------------------+-------------------+--------------+ | 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 | +-------------------+-------------------+-------------------+-------------------+--------------+
Tijd
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;
Resultaat:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+