sql >> Databasteknik >  >> RDS >> Mysql

Hur man får det korta månadsnamnet från ett datum i MySQL

I MySQL kan du använda DATE_FORMAT() funktion med %b formatspecifikation för att returnera det korta månadsnamnet. Du kan till exempel returnera Jan eller Feb istället för January eller February .

Exempel

SELECT DATE_FORMAT('2035-01-18', '%b');

Resultat:

Jan

Här är ett annat exempel som går igenom de olika månaderna på året:

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";

Resultat (med vertikal utdata):

 1: Jan
 2: Feb
 3: Mar
 4: Apr
 5: May
 6: Jun
 7: Jul
 8: Aug
 9: Sep
10: Oct
11: Nov
12: Dec

Du kan returnera andra datum- och tidsenheter också, men den här artikeln handlar om att returnera det korta månadsnamnet.

Se MySQL Date Format Specifiers för en lista över formatspecificerare som kan användas med DATE_FORMAT() .

Förkorta hela månadens namn

Om du behöver förkorta ett fullständigt månadsnamn kan du alltid använda en funktion som LEFT() för att bara returnera de tre första tecknen (eller hur många du behöver).

Exempel:

SELECT 
    DATE_FORMAT('2035-09-18', '%M') AS Full,
    LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;

Resultat:

+-----------+-------+
| Full      | Short |
+-----------+-------+
| September | Sep   |
+-----------+-------+

Vi kan alternativt använda en funktion som CAST() för att konvertera till en datatyp med endast tre tecken, till exempel detta:

SELECT 
    DATE_FORMAT('2035-09-18', '%M') AS Full,
    CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;

Resultat:

+-----------+-------+
| Full      | Short |
+-----------+-------+
| September | Sep   |
+-----------+-------+
1 row in set, 1 warning (0.00 sec)

I det här fallet får vi en varning eftersom vi trunkerar ett längre värde:

show warnings;

Resultat:

+---------+------+------------------------------------------------+
| Level   | Code | Message                                        |
+---------+------+------------------------------------------------+
| Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' |
+---------+------+------------------------------------------------+

Att förkorta månadsnamnet så här kan vara bra när du arbetar med språk som engelska, men tänk på att det kanske inte ger samma resultat som när du använder %b formatspecifikation.

För att visa vad jag menar, här är vad som händer när jag byter session till att använda det thailändska språket:

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;

Resultat:

+--------------------+-----------+----------+
| Full               | Truncated | Short    |
+--------------------+-----------+----------+
| ตุลาคม             | ตุล        | ต.ค.     |
+--------------------+-----------+----------+

Att trunkera hela månadsnamnet ger ett annat resultat än att använda %b formatspecifikation för att returnera det korta månadsnamnet.


  1. Hur väljer man en Oracle-leverantör för .Net-applikationen?

  2. Hur man designar ett geografiskt distribuerat MariaDB-kluster

  3. Hur Sinh() fungerar i PostgreSQL

  4. Hur man benchmarkar PostgreSQL-prestanda