MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona DATE_FORMAT() in MariaDB

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.