MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie DATE_FORMAT() in MariaDB funktioniert

In MariaDB DATE_FORMAT() ist eine eingebaute Datums- und Uhrzeitfunktion, die ein Datum gemäß der angegebenen Formatzeichenfolge formatiert.

Es erfordert zwei Argumente; das Datum und den Formatstring. Es akzeptiert auch ein optionales drittes Argument, mit dem Sie das Gebietsschema angeben können.

Syntax

Die Syntax lautet wie folgt:

DATE_FORMAT(date, format[, locale]) 

Wobei date ist das Datum, format ist die Formatzeichenfolge (siehe akzeptierte Formatbezeichner) und locale ist ein optionales Gebietsschema, das für das zurückgegebene Format verwendet werden soll.

Beispiel

Hier ist ein Beispiel:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y'); 

Ergebnis:

+---------------------------------------------- ------+| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |+--------------------- -------------------------------+| Freitag, 25. Januar 2030 |+--------------------------------------------------- ---------+

Hier ist es wieder, aber diesmal mit %r um die Zeit im 12-Stunden-Format zurückzugeben:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r'); 

Ergebnis:

+--------------------------------------------------+| DATE_FORMAT('2030-01-25 10:30:45', '%r') |+------------------------------------ --------------+| 10:30:45 Uhr |+-------------------------------------------------- +

Wir können sie kombinieren, sodass wir die Uhrzeit und das Datum erhalten:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y'); 

Ergebnis:

+---------------------------------------------- ---------+| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |+------------------ ------------------------------------+| 10:30:45 Freitag, 25. Januar 2030 |+------------------------------------ ------------------+

Die Sprache für die Monatsnamen, Tagesnamen usw. wird durch lc_time_names bestimmt Systemvariable. Der Standardwert ist immer en_US unabhängig von der Gebietsschemaeinstellung des Systems. So sehen Sie Ihre aktuelle Einstellung.

Das Locale-Argument

Ab MariaDB 10.3.2 kann ein optionales drittes Argument verwendet werden, um das Gebietsschema anzugeben. Wenn dies angegeben ist, macht es die Funktion unabhängig von den Sitzungseinstellungen.

SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR'); 

Ergebnis:

+---------------------------------------------- ------+| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |+--------------------- ------------------------------+| Viernes, 25. Januar 2030 |+--------------------------------------------------- ---------+

Hier sind einige weitere Gebietsschemata:

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; 

Ergebnis:

fr_FR:vendredi, 25. Januar 2030hr_HR:Petak, 25. Siječanj 2030fr_FR:Jumaat, 25. Januar 2030_TH:ศุกร์, 25. มกราคม 2030

In diesem Fall ist das letzte thailändisch, und obwohl es thailändische Zeichen für den Monatsnamen und den Tagesnamen verwendet, ändert es das Jahr nicht in den thailändischen Kalender. Das Jahr 2030 wäre 2573 bei Verwendung des thailändischen Kalenders. Ich denke also, die Annahme ist, dass, wenn Sie das thailändische Jahr verwenden möchten, das Datum, an dem Sie übergeben werden, bereits das thailändische Jahr verwendet.

Aktuelles Datum

Hier übergeben wir NOW() als Datumsargument, um das aktuelle Datum zu formatieren:

SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y'); 

Ergebnis:

+--------------------------+| DATE_FORMAT(NOW(), '%r %W, %D %M %Y') |+------------------------------------ -----------+| 09:53:00 Uhr Dienstag, 11. Mai 2021 |+------------------------------------- --+

Ungültige Argumente

Wenn ungültige Argumente übergeben werden, DATE_FORMAT() gibt null zurück :

SELECT DATE_FORMAT('Homer', 'Simpson'); 

Ergebnis:

+---------------------------------+| DATE_FORMAT('Homer', 'Simpson') |+----------------------------------------------+| NULL |+---------------------------------------------+

Fehlendes Argument

Aufruf von DATE_FORMAT() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT DATE_FORMAT(); 

Ergebnis:

ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden

Und noch ein Beispiel:

SELECT DATE_FORMAT('2030-05-21'); 

Ergebnis:

ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden

Der GET_FORMAT() Funktion

Sie können auch GET_FORMAT() verwenden Funktion im zweiten Argument zu DATE_FORMAT() . Dies gibt die vollständige Formatzeichenfolge für ein bestimmtes Datumsformat zurück, wodurch Sie sich die zu verwendende Formatzeichenfolge nicht merken müssen.