I MariaDB, DATE_FORMAT()
är en inbyggd datum- och tidsfunktion som formaterar ett datum enligt den givna formatsträngen.
Det kräver två argument; datumet och formatsträngen. Den accepterar också ett valfritt tredje argument som låter dig specificera språket.
Syntax
Syntaxen ser ut så här:
DATE_FORMAT(date, format[, locale])
Där date
är datumet, format
är formatsträngen (se godkända formatspecifikationer) och locale
är ett valfritt språk att använda för det returnerade formatet.
Exempel
Här är ett exempel:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Resultat:
+------------------------------------------------------ ------+| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |+--------------------------- ------------------------------------+| Fredagen den 25 januari 2030 |+-------------------------------------------------------- ----------+
Här är den igen, men den här gången med %r
för att returnera tiden som returneras i 12-timmarsformat:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Resultat:
+--------------------------------------------------+| DATE_FORMAT('2030-01-25 10:30:45', '%r') |+-------------------------------- --------------+| 10:30:45 |+------------------------------------------------ +
Vi kan kombinera dem, så att vi får tid och datum:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Resultat:
+------------------------------------------------------ ----------+| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |+------------------- ------------------------------------+| 10:30:45 Fredagen den 25 januari 2030 |+------------------------------------------------ ------------------+
Språket för månadsnamn, dagnamn etc bestäms av lc_time_names
systemvariabel. Standard är alltid en_US
oberoende av systemets lokalinställning. Så här ser du din nuvarande inställning.
Lägenhetsargumentet
Från och med MariaDB 10.3.2 kan ett valfritt tredje argument användas för att ange lokalen. När detta är specificerat gör det funktionen oberoende av sessionsinställningarna.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Resultat:
+------------------------------------------------------ ------+| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |+---------------------------- ------------------------------------+| viernes, 25:e enero 2030 |+--------------------------------------------------- ----------+
Här är några fler lokaler:
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;
Resultat:
fr_FR:vendredi, 25th janvier 2030hr_HR:Petak, 25th Siječanj 2030fr_FR:Jumaat, 25th Januari 2030th_TH:ศุกร์, 25th มกกค มกคpreI det här fallet är den sista thailändska, och även om den använder thailändska tecken för månadsnamn och dagnamn, ändrar den inte året till den thailändska kalendern. År 2030 skulle vara 2573 när man använder den thailändska kalendern. Så jag antar att antagandet är att om du vill använda det thailändska året, så kommer datumet du passerar redan att använda det thailändska året.
Aktuellt datum
Här skickar vi
NOW()
som datumargument för att formatera det aktuella datumet:SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Resultat:
+-----------------------------------------------+| DATE_FORMAT(NU(), '%r %W, %D %M %Y') |+-------------------------------- -----------+| 09:53:00 tisdag 11 maj 2021 |+------------------------------------------------ --+Ogiltiga argument
När några ogiltiga argument skickades,
DATE_FORMAT()
returnerarnull
:SELECT DATE_FORMAT('Homer', 'Simpson');
Resultat:
+--------------------------------+| DATE_FORMAT('Homer', 'Simpson') |+----------------------------------------+| NULL |+---------------------------------+Argument saknas
Ringer
DATE_FORMAT()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:SELECT DATE_FORMAT();
Resultat:
ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1Och ett annat exempel:
SELECT DATE_FORMAT('2030-05-21');
Resultat:
ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1
GET_FORMAT()
FunktionDu kan också använda
GET_FORMAT()
funktion i det andra argumentet tillDATE_FORMAT()
. Detta returnerar hela formatsträngen för ett givet datumformat, vilket gör att du slipper komma ihåg formatsträngen som ska användas.