sql >> Databáze >  >> RDS >> Mysql

Jak získat krátký název měsíce z data v MySQL

V MySQL můžete použít DATE_FORMAT() pomocí %b specifikátor formátu pro vrácení krátkého názvu měsíce. Můžete například vrátit Jan nebo Feb místo January nebo Feb .

Příklad

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

Výsledek:

Jan

Zde je další příklad, který prochází různými měsíci v roce:

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

Výsledek (při použití vertikálního výstupu):

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

Můžete vrátit i jiné jednotky data a času, ale tento článek je o vrácení krátkého názvu měsíce.

Seznam specifikátorů formátu, které lze použít s DATE_FORMAT(), najdete v části MySQL Date Format Specifiers .

Zkraťte celý název měsíce

Pokud potřebujete zkrátit celý název měsíce, můžete vždy použít funkci jako LEFT() vrátit pouze první tři znaky (nebo kolik jich potřebujete).

Příklad:

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

Výsledek:

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

Alternativně bychom mohli použít funkci jako CAST() převést na datový typ s pouze třemi znaky, jako je tento:

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

Výsledek:

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

V tomto případě dostaneme varování, protože zkracujeme delší hodnotu:

show warnings;

Výsledek:

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

Zkrácení názvu měsíce takto může být v pořádku při práci s jazyky, jako je angličtina, ale mějte na paměti, že nemusí vrátit stejný výsledek jako při použití %b specifikátor formátu.

Abych demonstroval, co tím myslím, zde je to, co se stane, když přepnu relaci na thajský jazyk:

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;

Výsledek:

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

Zkrácení celého názvu měsíce vrátí jiný výsledek než použití %b specifikátor formátu pro návrat krátkého názvu měsíce.


  1. Funkce MySQL GREATEST() – Najděte největší argument v seznamu argumentů

  2. SQL Server Fuzzy Search s procentem shody

  3. Odebrat identitu ze sloupce v tabulce

  4. Oprava „ERROR 1054 (42S22):Neznámý sloupec „…“ v „klauzuli on“ v MariaDB