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

Sådan får du det korte månedsnavn fra en dato i MySQL

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.


  1. Kalder en gemt PROCEDURE i Toad

  2. Table Print passer ikke til sidestørrelsen

  3. 2 måder at sammenkæde strenge og tal i MariaDB

  4. MySQL:Hurtigste måde at tælle antal rækker på