In MySQL, puoi usare DATE_FORMAT()
funzione con il %b
identificatore di formato per restituire il nome breve del mese. Ad esempio, puoi restituire Jan
o Feb
invece di January
o February
.
Esempio
SELECT DATE_FORMAT('2035-01-18', '%b');
Risultato:
Jan
Ecco un altro esempio che ripercorre i vari mesi dell'anno:
SELECT
DATE_FORMAT('2035-01-18', '%b') AS "1",
DATE_FORMAT('2035-02-18', '%b') AS "2",
DATE_FORMAT('2035-03-18', '%b') AS "3",
DATE_FORMAT('2035-04-18', '%b') AS "4",
DATE_FORMAT('2035-05-18', '%b') AS "5",
DATE_FORMAT('2035-06-18', '%b') AS "6",
DATE_FORMAT('2035-07-18', '%b') AS "7",
DATE_FORMAT('2035-08-18', '%b') AS "8",
DATE_FORMAT('2035-09-18', '%b') AS "9",
DATE_FORMAT('2035-10-18', '%b') AS "10",
DATE_FORMAT('2035-11-18', '%b') AS "11",
DATE_FORMAT('2035-12-18', '%b') AS "12";
Risultato (usando l'output verticale):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Puoi restituire anche altre unità di data e ora, ma questo articolo riguarda la restituzione del nome breve del mese.
Consulta gli identificatori di formato della data MySQL per un elenco di identificatori di formato che possono essere utilizzati con DATE_FORMAT()
.
Abbreviare il nome del mese intero
Se devi abbreviare il nome di un mese intero, puoi sempre utilizzare una funzione come LEFT()
per restituire solo i primi tre caratteri (o quanti ne occorrono).
Esempio:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Risultato:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
In alternativa potremmo usare una funzione come CAST()
per convertire in un tipo di dati con solo tre caratteri, come questo:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Risultato:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
In questo caso, riceviamo un avviso perché stiamo troncando un valore più lungo:
show warnings;
Risultato:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Accorciare il nome del mese in questo modo può andare bene quando si lavora con lingue come l'inglese, ma tieni presente che potrebbe non restituire lo stesso risultato di quando si utilizza il %b
identificatore di formato.
Per dimostrare cosa intendo, ecco cosa succede quando cambio la mia sessione per usare la lingua tailandese:
SET lc_time_names = 'th_TH';
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Truncated,
DATE_FORMAT('2023-10-25', '%b') AS Short;
Risultato:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Il troncamento del nome completo del mese restituisce un risultato diverso rispetto all'utilizzo di %b
specificatore di formato per restituire il nome breve del mese.