sql >> Database >  >> RDS >> MariaDB

Hoe DATE_FORMAT() werkt in MariaDB

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.


  1. Verkrijg het aantal dagen tussen twee datums in Oracle, inclusief de datums

  2. Hoe Codeigniter-taalbestanden uit de database te maken?

  3. Bindvariabelen gebruiken met dynamische SELECT INTO-clausule in PL/SQL

  4. Databasemodellen voor e-commerce Deel 1:De nieuwsbrief