Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere il nome breve del mese da una data in MySQL

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.