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:
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:
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:
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.