sql >> データベース >  >> RDS >> Mysql

MySQLの日付から短い月の名前を取得する方法

    MySQLでは、DATE_FORMAT()を使用できます %bで機能する 短い月の名前を返すフォーマット指定子。たとえば、Janを返すことができます またはFeb Januaryの代わりに またはFebruary

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

    結果:

    Jan

    1年のさまざまな月に実行される別の例を次に示します。

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

    結果(垂直出力を使用):

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

    他の日付と時刻の単位も返すことができますが、この記事では短い月の名前を返す方法について説明しています。

    DATE_FORMAT()で使用できる形式指定子のリストについては、MySQLの日付形式指定子を参照してください。 。

    完全な月の名前を短くする

    完全な月の名前を短縮する必要がある場合は、いつでもLEFT()のような関数を使用できます。 最初の3文字だけ(または必要な数だけ)を返します。

    例:

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

    結果:

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

    または、CAST()のような関数を使用することもできます。 次のように、3文字のみのデータ型に変換するには:

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

    結果:

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

    この場合、より長い値を切り捨てているため、警告が表示されます:

    show warnings;

    結果:

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

    このように月の名前を短くすることは、英語などの言語で作業する場合は問題ありませんが、%bを使用する場合と同じ結果が返されない場合があることに注意してください。 フォーマット指定子。

    私が何を意味するかを示すために、セッションをタイ語を使用するように切り替えると、次のようになります。

    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;

    結果:

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

    完全な月の名前を切り捨てると、%bを使用した場合とは異なる結果が返されます 短い月の名前を返すフォーマット指定子。


    1. PostgresのGeneratedValue

    2. SQL Server:NVARCHARのダークサイド

    3. 制限付きのGROUP_CONCAT

    4. MySQL接続(max_connections)を増やす方法は?