Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie den kurzen Monatsnamen aus einem Datum in MySQL

In MySQL können Sie das DATE_FORMAT() verwenden Funktion mit dem %b Formatbezeichner, um den kurzen Monatsnamen zurückzugeben. Beispielsweise können Sie Jan zurückgeben oder Feb statt January oder Feb .

Beispiel

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

Ergebnis:

Jan

Hier ist ein weiteres Beispiel, das sich durch die verschiedenen Monate des Jahres zieht:

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

Ergebnis (bei vertikaler Ausgabe):

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

Sie können auch andere Datums- und Zeiteinheiten zurückgeben, aber in diesem Artikel geht es nur um die Rückgabe des kurzen Monatsnamens.

Siehe MySQL-Datumsformatbezeichner für eine Liste von Formatbezeichnern, die mit DATE_FORMAT() verwendet werden können .

Kürzen Sie den vollständigen Monatsnamen

Wenn Sie einen vollständigen Monatsnamen kürzen müssen, können Sie immer eine Funktion wie LEFT() verwenden um nur die ersten drei Zeichen zurückzugeben (oder wie viele Sie benötigen).

Beispiel:

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

Ergebnis:

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

Wir könnten alternativ eine Funktion wie CAST() verwenden in einen Datentyp mit nur drei Zeichen zu konvertieren, wie z. B.:

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

Ergebnis:

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

In diesem Fall erhalten wir eine Warnung, weil wir einen längeren Wert abschneiden:

show warnings;

Ergebnis:

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

Das Verkürzen des Monatsnamens auf diese Weise kann bei der Arbeit mit Sprachen wie Englisch in Ordnung sein, aber denken Sie daran, dass es möglicherweise nicht dasselbe Ergebnis zurückgibt wie bei Verwendung von %b Formatbezeichner.

Um zu demonstrieren, was ich meine, hier ist, was passiert, wenn ich meine Sitzung auf die Verwendung der thailändischen Sprache umstelle:

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;

Ergebnis:

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

Das Abschneiden des vollständigen Monatsnamens liefert ein anderes Ergebnis als die Verwendung von %b Formatbezeichner, um den kurzen Monatsnamen zurückzugeben.