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

MariaDBでのMONTHNAME()のしくみ

    MariaDBでは、MONTHNAME() は、指定された日付の月の名前を返す組み込みの日付と時刻の関数です。

    月の名前を抽出する日付である1つの引数を受け入れます。

    構文

    構文は次のようになります:

    MONTHNAME(date)

    date 月の名前を取得する日付です。

    次に例を示します:

    SELECT MONTHNAME('2041-11-14');

    結果:

    +-------------------------+
    | MONTHNAME('2041-11-14') |
    +-------------------------+
    | November                |
    +-------------------------+

    言語

    月の名前に使用される言語は、lc_time_namesの値によって制御されます システム変数。

    これが結果にどのように影響するかを示す例を次に示します。

    SET lc_time_names = 'es_AR';
    SELECT MONTHNAME('2041-11-14');

    結果:

    +-------------------------+
    | MONTHNAME('2041-11-14') |
    +-------------------------+
    | November                |
    +-------------------------+

    そして、en_USに切り替えます 、これがデフォルトです:

    SET lc_time_names = 'en_US';
    SELECT MONTHNAME('2041-11-14');

    結果:

    +-------------------------+
    | MONTHNAME('2041-11-14') |
    +-------------------------+
    | November                |
    +-------------------------+

    MariaDBでサポートされているロケールのリストと、使用可能なロケールの独自のリストを返す方法は次のとおりです。

    lc_time_namesの値を確認する方法を説明する投稿があります システム変数。

    日時の値

    日時の値でも機能します:

    SELECT MONTHNAME('2041-01-15 10:30:45');

    結果:

    +----------------------------------+
    | MONTHNAME('2041-01-15 10:30:45') |
    +----------------------------------+
    | January                          |
    +----------------------------------+

    ゼロ月

    日付にゼロの月があると、nullが返されます :

    SELECT MONTHNAME('2030-00-00');

    結果:

    +-------------------------+
    | MONTHNAME('2030-00-00') |
    +-------------------------+
    | NULL                    |
    +-------------------------+

    数値日付

    日付として意味がある限り、日付を数値として渡すこともできます。

    SELECT MONTHNAME(20201208);

    結果:

    +---------------------+
    | MONTHNAME(20201208) |
    +---------------------+
    | December            |
    +---------------------+

    2桁の年で十分です:

    SELECT MONTHNAME(201208);

    結果:

    +-------------------+
    | MONTHNAME(201208) |
    +-------------------+
    | December          |
    +-------------------+

    しかし、それは日付として意味をなさなければなりません。日の部分を無効な日に増やすと、次のようになります。

    SELECT MONTHNAME(201299);

    結果:

    +-------------------+
    | MONTHNAME(201299) |
    +-------------------+
    | NULL              |
    +-------------------+

    その他の区切り文字

    日付には他の区切り文字を使用できます。 MariaDBは、日付の区切り文字に関しては非常に寛容です。いくつかの有効な例を次に示します。

    SELECT 
        MONTHNAME('2027/08/19'),
        MONTHNAME('2027,08,19'),
        MONTHNAME('2027:08:19'),
        MONTHNAME('2027;08!19');

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

    MONTHNAME('2027/08/19'): August
    MONTHNAME('2027,08,19'): August
    MONTHNAME('2027:08:19'): August
    MONTHNAME('2027;08!19'): August

    現在の日付

    NOW()を渡すことができます 現在の日付を使用する日付引数として:

    SELECT 
        NOW(),
        MONTHNAME(NOW());

    結果:

    +---------------------+------------------+
    | NOW()               | MONTHNAME(NOW()) |
    +---------------------+------------------+
    | 2021-05-14 10:11:16 | May              |
    +---------------------+------------------+

    無効な引数

    無効な引数が渡されると、MONTHNAME() nullを返します :

    SELECT MONTHNAME('Wrong!');

    結果:

    +---------------------+
    | MONTHNAME('Wrong!') |
    +---------------------+
    | NULL                |
    +---------------------+

    引数がありません

    MONTHNAME()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT MONTHNAME();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MONTHNAME'

    そして別の例:

    SELECT MONTHNAME('2030-01-25', '2045-05-08');

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MONTHNAME'

    1. MySQL8共通テーブル式CTE

    2. MariaDB ROUND()とFLOOR()

    3. Plan Explorer 3.0ウェビナー–サンプルとQ&A

    4. OracleのTAN()関数