I MySQL kan du bruge DATE_FORMAT()
funktion med %b
formatspecifikation for at returnere det korte månedsnavn. For eksempel kan du returnere Jan
eller Feb
i stedet for January
eller February
.
Eksempel
SELECT DATE_FORMAT('2035-01-18', '%b');
Resultat:
Jan
Her er et andet eksempel, der løber gennem de forskellige måneder i å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 (ved hjælp af lodret output):
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 også returnere andre dato- og tidsenheder, men denne artikel handler om at returnere det korte månedsnavn.
Se MySQL-datoformatspecifikationer for en liste over formatspecifikationer, der kan bruges med DATE_FORMAT()
.
Forkort det fulde månedsnavn
Hvis du har brug for at forkorte et helt månedsnavn, kan du altid bruge en funktion som LEFT()
for kun at returnere de første tre tegn (eller hvor mange du har brug for).
Eksempel:
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 kunne alternativt bruge en funktion som CAST()
at konvertere til en datatype med kun tre tegn, såsom dette:
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 dette tilfælde får vi en advarsel, fordi vi afkorter en længere værdi:
show warnings;
Resultat:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
At forkorte månedsnavnet på denne måde kan være fint, når du arbejder med sprog som engelsk, men vær opmærksom på, at det muligvis ikke returnerer det samme resultat, som når du bruger %b
formatspecifikation.
For at demonstrere, hvad jeg mener, er her, hvad der sker, når jeg skifter min session til at bruge det thailandske sprog:
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 | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Afkortning af det fulde månedsnavn giver et andet resultat end at bruge %b
formatspecifikation for at returnere det korte månedsnavn.