Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać skróconą nazwę miesiąca z daty w MySQL?

W MySQL możesz użyć DATE_FORMAT() funkcja z %b specyfikator formatu, aby zwrócić skróconą nazwę miesiąca. Na przykład możesz zwrócić Jan lub Feb zamiast January lub February .

Przykład

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

Wynik:

Jan

Oto kolejny przykład z różnych miesięcy w roku:

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

Wynik (przy użyciu wyjścia pionowego):

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

Możesz również zwrócić inne jednostki daty i czasu, ale ten artykuł dotyczy zwracania skróconej nazwy miesiąca.

Zobacz Specyfikatory formatu daty MySQL, aby uzyskać listę specyfikatorów formatu, których można użyć z DATE_FORMAT() .

Skróć pełną nazwę miesiąca

Jeśli potrzebujesz skrócić pełną nazwę miesiąca, zawsze możesz użyć funkcji takiej jak LEFT() aby zwrócić tylko pierwsze trzy znaki (lub tyle, ile potrzebujesz).

Przykład:

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

Wynik:

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

Moglibyśmy alternatywnie użyć funkcji takiej jak CAST() przekonwertować na typ danych składający się tylko z trzech znaków, na przykład:

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

Wynik:

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

W takim przypadku otrzymujemy ostrzeżenie, ponieważ obcinamy dłuższą wartość:

show warnings;

Wynik:

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

Skrócenie nazwy miesiąca w ten sposób może być w porządku podczas pracy z językami takimi jak angielski, ale pamiętaj, że może nie zwrócić takiego samego wyniku, jak przy użyciu %b specyfikator formatu.

Aby zademonstrować, co mam na myśli, oto co się dzieje, gdy przełączam sesję na język tajski:

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;

Wynik:

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

Obcięcie pełnej nazwy miesiąca zwraca inny wynik niż użycie %b specyfikator formatu, aby zwrócić skróconą nazwę miesiąca.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szybkie spojrzenie na funkcje numeryczne SQL Server

  2. MySQL - AKTUALIZUJ wiele wierszy z różnymi wartościami w jednym zapytaniu

  3. Czy używać SET NAMES

  4. Wyzwalacz ognia MySQL zarówno dla wstawiania, jak i aktualizacji

  5. Przewodnik po projektowaniu bazy danych dla powiadomień w MySQL