I MariaDB, DATE_FORMAT()
er en indbygget dato- og tidsfunktion, der formaterer en dato i henhold til den givne formatstreng.
Det kræver to argumenter; datoen og formatstrengen. Den accepterer også et valgfrit tredje argument, der giver dig mulighed for at angive lokaliteten.
Syntaks
Syntaksen ser sådan ud:
DATE_FORMAT(date, format[, locale])
Hvor date
er datoen, format
er formatstrengen (se accepterede formatspecifikationer) og locale
er en valgfri lokalitet til brug for det returnerede format.
Eksempel
Her er et eksempel:
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') |+--------------------------- --------------------------------------+| Fredag den 25. januar 2030 |+-------------------------------------------------------- ----------+
Her er den igen, men denne gang ved hjælp af %r
for at returnere den returnerede tid i 12 timers format:
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 kombinere dem, så vi får tid og dato:
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 fredag den 25. januar 2030 |+------------------------------------------------ ------------------+
Sproget for månedsnavne, dagnavne osv. bestemmes af lc_time_names
systemvariabel. Standarden er altid en_US
uanset systemets lokalitetsindstilling. Sådan ser du din nuværende indstilling.
Landestandardargumentet
Fra og med MariaDB 10.3.2 kan et valgfrit tredje argument bruges til at angive lokaliteten. Når dette er angivet, gør det funktionen uafhængig af sessionsindstillingerne.
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. enero 2030 |+--------------------------------------------------- ----------+
Her er nogle flere lokaliteter:
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, 25. janvier 2030hr_HR:Petak, 25. Siječanj 2030fr_FR:Jumaat, 25. januar 2030._TH:ศุกร์, 25. มกกค 2000.I dette tilfælde er den sidste thailandsk, og selvom den bruger thailandske tegn som månedsnavn og dagnavn, ændrer den ikke året til den thailandske kalender. Året 2030 ville være 2573, når man bruger den thailandske kalender. Så jeg gætter på, at antagelsen er, at hvis du vil bruge det thailandske år, så vil den dato, du passerer, allerede bruge det thailandske år.
Aktuel dato
Her sender vi
NOW()
som datoargument for at formatere den aktuelle dato:SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Resultat:
+----------------------------------------------+| DATE_FORMAT(NU(), '%r %W, %D %M %Y') |+-------------------------------- -----------+| 09:53:00 tirsdag den 11. maj 2021 |+------------------------------------------------ --+Ugyldige argumenter
Når ugyldige argumenter sendes,
DATE_FORMAT()
returnerernull
:SELECT DATE_FORMAT('Homer', 'Simpson');
Resultat:
+--------------------------------+| DATE_FORMAT('Homer', 'Simpson') |+----------------------------------------+| NULL |+----------------------------------------+Manglende argument
Kalder
DATE_FORMAT()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:SELECT DATE_FORMAT();
Resultat:
FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ')' på linje 1Og endnu et eksempel:
SELECT DATE_FORMAT('2030-05-21');
Resultat:
FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ')' på linje 1
GET_FORMAT()
FunktionDu kan også bruge
GET_FORMAT()
funktion i det andet argument tilDATE_FORMAT()
. Dette returnerer den fulde formatstreng for et givet datoformat, hvilket sparer dig for at skulle huske den formatstreng, der skal bruges.