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.