sql >> Databasteknik >  >> RDS >> MariaDB

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

I MariaDB kan du använda DATE_FORMAT() funktion för att returnera olika datumdelar från ett datum. En av de saker du kan returnera är det korta månadsnamnet. Till exempel Nov eller Dec (istället för November eller December ).

Formatspecifikationen "Short Month Name" (%b )

Nyckeln till att returnera det korta månadsnamnet när du använder DATE_FORMAT() funktionen är att använda den tillämpliga formatspecifikationen.

I MariaDB är formatspecifikationen för det korta månadsnamnet:%b

Exempel

Här är ett exempel att visa:

SELECT DATE_FORMAT('2023-12-25', '%b');

Resultat:

+---------------------------------+
| DATE_FORMAT('2023-12-25', '%b') |
+---------------------------------+
| Dec                             |
+---------------------------------+

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

SELECT 
    DATE_FORMAT('2023-01-25', '%b') AS "1",
    DATE_FORMAT('2023-02-25', '%b') AS "2",
    DATE_FORMAT('2023-03-25', '%b') AS "3",
    DATE_FORMAT('2023-04-25', '%b') AS "4",
    DATE_FORMAT('2023-05-25', '%b') AS "5",
    DATE_FORMAT('2023-06-25', '%b') AS "6",
    DATE_FORMAT('2023-07-25', '%b') AS "7",
    DATE_FORMAT('2023-08-25', '%b') AS "8",
    DATE_FORMAT('2023-09-25', '%b') AS "9",
    DATE_FORMAT('2023-10-25', '%b') AS "10",
    DATE_FORMAT('2023-11-25', '%b') AS "11",
    DATE_FORMAT('2023-12-25', '%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 specifikt om att returnera det korta månadsnamnet. Se MariaDB Format Strings för en lista över formatspecifikationer som kan användas med DATE_FORMAT() .

Andra tillvägagångssätt

Det finns andra sätt att få det korta månadsnamnet från ett datum som innebär att man skär av den första delen av månaden.

Detta kan dock vara mer benäget för fel än metoden ovan (plus att den är mer invecklad). Du kan få oväntade resultat när du använder den här metoden, särskilt när du arbetar med olika språk.

Här är några exempel för att visa vad jag menar.

Istället för att använda %b formatspecifikator som vi gjorde i föregående exempel, kan vi använda %M formatspecifikation för att returnera hela månadsnamnet, returnera sedan förkorta resultatet med en funktion som LEFT() .

Exempel:

SELECT 
    DATE_FORMAT('2023-10-25', '%M') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;

Resultat:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

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('2023-10-25', '%M') AS Full,
    CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;

Resultat:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

Detta fungerar bra när du arbetar med det engelska språket (och kanske några andra språk). Men låt oss se vad som händer när vi byter till ett annat språk – säg thailändska:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;

Resultat:

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

Men här är vad som händer när vi använder %b formatspecifikation för att returnera det korta månadsnamnet:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;

Resultat:

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

Det ger ett annat resultat.

Så jag rekommenderar att du använder %b formatspecifikation när det är möjligt.


  1. merge update oracle kan inte få en stabil uppsättning rader

  2. finns det en PRODUKT-funktion som det finns en SUM-funktion i Oracle SQL?

  3. Oracle får främmande nycklar

  4. Hur man bestämmer tabellstorlek i Oracle