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

MariaDBでのDATE_FORMAT()のしくみ

    MariaDBでは、DATE_FORMAT() は、指定されたフォーマット文字列に従って日付をフォーマットする組み込みの日付と時刻の関数です。

    2つの引数が必要です。日付とフォーマット文字列。また、ロケールを指定できるオプションの3番目の引数も受け入れます。

    構文

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

    DATE_FORMAT(date, format[, locale])

    date は日付、format はフォーマット文字列(受け入れられたフォーマット指定子を参照)、およびlocale 返される形式に使用するオプションのロケールです。

    次に例を示します:

    SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');

    結果:

    +----------------------------------------------------+
    | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |
    +----------------------------------------------------+
    | Friday, 25th January 2030                          |
    +----------------------------------------------------+

    ここでも同じですが、今回は%rを使用します 返された時刻を12時間形式で返すには:

    SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');

    結果:

    +------------------------------------------+
    | DATE_FORMAT('2030-01-25 10:30:45', '%r') |
    +------------------------------------------+
    | 10:30:45 AM                              |
    +------------------------------------------+

    それらを組み合わせて、日時を取得できます:

    SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');

    結果:

    +-------------------------------------------------------+
    | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |
    +-------------------------------------------------------+
    | 10:30:45 AM Friday, 25th January 2030                 |
    +-------------------------------------------------------+

    月の名前、日の名前などの言語は、lc_time_namesによって決定されます。 システム変数。デフォルトは常にen_US システムのロケール設定に関係なく。現在の設定を確認する方法は次のとおりです。

    ロケールの引数

    MariaDB 10.3.2以降、オプションの3番目の引数を使用してロケールを指定できます。これを指定すると、機能がセッション設定から独立します。

    SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');

    結果:

    +----------------------------------------------------+
    | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |
    +----------------------------------------------------+
    | viernes, 25th enero 2030                           |
    +----------------------------------------------------+

    その他のロケールは次のとおりです:

    SELECT 
        DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
        DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
        DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
        DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;

    結果:

    fr_FR: vendredi, 25th janvier 2030
    hr_HR: Petak, 25th Siječanj 2030
    fr_FR: Jumaat, 25th Januari 2030
    th_TH: ศุกร์, 25th มกราคม 2030

    この場合、最後はタイ語で、月の名前と日の名前にタイ文字を使用していますが、年はタイのカレンダーに変更されません。タイのカレンダーを使用すると、2030年は2573年になります。したがって、タイの年を使用する場合は、通過した日付ですでにタイの年が使用されていると想定されます。

    現在の日付

    ここでは、NOW()を渡します 現在の日付をフォーマットするための日付引数として:

    SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');

    結果:

    +---------------------------------------+
    | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') |
    +---------------------------------------+
    | 09:53:00 AM Tuesday, 11th May 2021    |
    +---------------------------------------+

    無効な引数

    無効な引数が渡された場合、DATE_FORMAT() nullを返します :

    SELECT DATE_FORMAT('Homer', 'Simpson');

    結果:

    +---------------------------------+
    | DATE_FORMAT('Homer', 'Simpson') |
    +---------------------------------+
    | NULL                            |
    +---------------------------------+

    引数がありません

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

    SELECT DATE_FORMAT();

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

    そして別の例:

    SELECT DATE_FORMAT('2030-05-21');

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

    GET_FORMAT() 機能

    GET_FORMAT()を使用することもできます DATE_FORMAT()の2番目の引数の関数 。これにより、特定の日付形式の完全な形式文字列が返されるため、使用する形式文字列を覚えておく必要がありません。


    1. SQLServerでのEXCEPTのしくみ

    2. ポスト/プレスクリプトフックを使用した高度なフェイルオーバー

    3. MySQL結果セットの行を制限する方法

    4. SQL Serverの一意のキーもインデックスですか?