In MariaDB, DATE_FORMAT()
è una funzione di data e ora incorporata che formatta una data in base alla stringa di formato specificata.
Richiede due argomenti; la data e la stringa di formato. Accetta anche un terzo argomento facoltativo che consente di specificare la locale.
Sintassi
La sintassi è questa:
DATE_FORMAT(date, format[, locale])
Dove date
è la data, format
è la stringa di formato (vedi identificatori di formato accettati) e locale
è una lingua facoltativa da utilizzare per il formato restituito.
Esempio
Ecco un esempio:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Risultato:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Eccolo di nuovo, ma questa volta usando %r
per restituire l'ora restituita nel formato 12 ore:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Risultato:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
Possiamo combinarli, in modo da ottenere l'ora e la data:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Risultato:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
La lingua per i nomi dei mesi, dei giorni, ecc. è determinata da lc_time_names
variabile di sistema. L'impostazione predefinita è sempre en_US
indipendentemente dalle impostazioni locali del sistema. Ecco come vedere la tua impostazione attuale.
L'argomento locale
A partire da MariaDB 10.3.2, è possibile utilizzare un terzo argomento facoltativo per specificare la locale. Quando viene specificato, rende la funzione indipendente dalle impostazioni della sessione.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Risultato:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Ecco alcune altre località:
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;
Risultato:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
In questo caso, l'ultimo è tailandese e, sebbene utilizzi caratteri tailandesi per il nome del mese e del giorno, non cambia l'anno nel calendario tailandese. L'anno 2030 sarebbe il 2573 se si utilizza il calendario thailandese. Quindi suppongo che il presupposto sia che se desideri utilizzare l'anno thailandese, la data in cui trascorri utilizzerà già l'anno thailandese.
Data attuale
Qui passiamo NOW()
come argomento data per formattare la data corrente:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Risultato:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Argomenti non validi
Quando vengono passati argomenti non validi, DATE_FORMAT()
restituisce null
:
SELECT DATE_FORMAT('Homer', 'Simpson');
Risultato:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Argomento mancante
Chiamando DATE_FORMAT()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT DATE_FORMAT();
Risultato:
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
E un altro esempio:
SELECT DATE_FORMAT('2030-05-21');
Risultato:
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
Il GET_FORMAT()
Funzione
Puoi anche usare GET_FORMAT()
funzione nel secondo argomento in DATE_FORMAT()
. Ciò restituisce la stringa di formato completa per un determinato formato di data, evitando di dover ricordare la stringa di formato da utilizzare.