In MariaDB, DATE_FORMAT()
is een ingebouwde datum- en tijdfunctie die een datum opmaakt volgens de opgegeven notatiereeks.
Het vereist twee argumenten; de datum en de notatiereeks. Het accepteert ook een optioneel derde argument waarmee je de landinstelling kunt specificeren.
Syntaxis
De syntaxis gaat als volgt:
DATE_FORMAT(date, format[, locale])
Waar date
is de datum, format
is de formaatreeks (zie geaccepteerde formaatspecificaties), en locale
is een optionele landinstelling om te gebruiken voor het geretourneerde formaat.
Voorbeeld
Hier is een voorbeeld:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Resultaat:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Hier is het weer, maar deze keer met %r
om de tijd terug te geven in 12 uur formaat:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Resultaat:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
We kunnen ze combineren, zodat we de tijd en datum krijgen:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Resultaat:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
De taal voor de maandnamen, dagnamen, enz. wordt bepaald door de lc_time_names
systeem variabele. De standaard is altijd en_US
ongeacht de landinstelling van het systeem. Zo kunt u uw huidige instelling bekijken.
Het lokale argument
Vanaf MariaDB 10.3.2 kan een optioneel derde argument worden gebruikt om de landinstelling op te geven. Als dit is opgegeven, wordt de functie onafhankelijk van de sessie-instellingen.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Resultaat:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Hier zijn nog enkele locaties:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;
Resultaat:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
In dit geval is de laatste Thais, en hoewel het Thaise karakters gebruikt voor de naam van de maand en de dag, verandert het het jaar niet naar de Thaise kalender. Het jaar 2030 zou 2573 zijn bij gebruik van de Thaise kalender. Dus ik denk dat de veronderstelling is dat als je het Thaise jaar wilt gebruiken, de datum die je passeert al het Thaise jaar zal gebruiken.
Huidige datum
Hier passeren we NOW()
als het datumargument om de huidige datum te formatteren:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Resultaat:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Ongeldige argumenten
Bij het doorgeven van ongeldige argumenten, DATE_FORMAT()
retourneert null
:
SELECT DATE_FORMAT('Homer', 'Simpson');
Resultaat:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Ontbrekend argument
Aanroepen van DATE_FORMAT()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT DATE_FORMAT();
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
En nog een voorbeeld:
SELECT DATE_FORMAT('2030-05-21');
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
De GET_FORMAT()
Functie
U kunt ook de GET_FORMAT()
. gebruiken functie in het tweede argument naar DATE_FORMAT()
. Dit retourneert de volledige formaattekenreeks voor een bepaalde datumnotatie, waardoor u de te gebruiken notatietekenreeks niet hoeft te onthouden.