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

MariaDBの日付から週番号を抽出する5つの関数

    以下は、MariaDBの日付から週番号を返すことができる5つの関数です。 4つは週だけを返し、1つは週と年の両方を合わせて返します。

    WEEK() 機能

    WEEK() 関数は、指定された日付の週を返します。

    例:

    SELECT WEEK('2023-07-25');

    結果:

    +--------------------+
    | WEEK('2023-07-25') |
    +--------------------+
    |                 30 |
    +--------------------+

    WEEK() 関数は、モードを指定するためのオプションの2番目の引数を受け入れます。この関数から得られる実際の結果は、使用されているモードによって異なります。 mode引数を省略した場合、default_week_formatの値 システム変数が使用されます。

    WEEK()の方法をご覧ください それぞれのモードと例の詳細については、MariaDBで動作します。

    EXTRACT() 機能

    EXTRACT () 関数を使用すると、日付から指定された単位を抽出できます。したがって、これを使用して、日付から週(および他の単位)を抽出できます。

    例:

    SELECT EXTRACT(WEEK FROM '2023-07-25');

    結果:

    +---------------------------------+
    | EXTRACT(WEEK FROM '2023-07-25') |
    +---------------------------------+
    |                              30 |
    +---------------------------------+

    DATE_FORMAT() 機能

    DATE_FORMAT() 関数を使用すると、フォーマット文字列に基づいて日付をフォーマットできます。 format文字列は、日付のフォーマット方法を指定します。

    したがって、この関数を使用して、日付からの週(およびその他の単位)を返すことができます。週の開始日などに応じて、週番号を返すためのさまざまなオプションがあります。

    週をさまざまな形式で返す例を次に示します。

    SELECT 
        DATE_FORMAT('2023-01-01', '%U') AS "%U",
        DATE_FORMAT('2023-01-01', '%u') AS "%u",
        DATE_FORMAT('2023-01-01', '%V') AS "%V",
        DATE_FORMAT('2023-01-01', '%v') AS "%v";

    結果:

    +------+------+------+------+
    | %U   | %u   | %V   | %v   |
    +------+------+------+------+
    | 01   | 00   | 01   | 52   |
    +------+------+------+------+

    これらの各フォーマット指定子の説明は次のとおりです。

    フォーマット指定子 説明
    %U 週番号(00-53)、週の最初の日が日曜日の場合。
    %u 週番号(00-53)、週の最初の日が月曜日の場合。
    %V 週番号(01-53)、週の最初の日が日曜日の場合。 %Xとともに使用 。
    %v 週番号(01-53)、週の最初の日が月曜日の場合。 %xとともに使用 。

    %Xの説明は次のとおりです および%x 上記の表で参照されているように:

    フォーマット指定子 説明
    %X 週の最初の日が日曜日の場合の4桁の年。 %Vとともに使用 。
    %x 週の最初の日が月曜日の場合の4桁の年。 %vとともに使用 。

    必要に応じて、形式指定子を組み合わせて年と週を一緒に返すことができます。

    SELECT 
        DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
        DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

    結果:

    +----------+----------+
    | %X, %V   | %x, %v   |
    +----------+----------+
    | 2023, 01 | 2022, 52 |
    +----------+----------+

    週番号は必ずしも上記の例を反映しているわけではないことに注意してください。実際に使用されている日付によって異なります。

    日付を1年前に進めましょう:

    SELECT 
        DATE_FORMAT('2024-01-01', '%U') AS "%U",
        DATE_FORMAT('2024-01-01', '%u') AS "%u",
        DATE_FORMAT('2024-01-01', '%V') AS "%V",
        DATE_FORMAT('2024-01-01', '%v') AS "%v";

    結果:

    +------+------+------+------+
    | %U   | %u   | %V   | %v   |
    +------+------+------+------+
    | 00   | 01   | 53   | 01   |
    +------+------+------+------+

    今回は別の結果セットが得られます。

    今年に向けて前進すると、次のようになります。

    SELECT 
        DATE_FORMAT('2024-12-12', '%U') AS "%U",
        DATE_FORMAT('2024-12-12', '%u') AS "%u",
        DATE_FORMAT('2024-12-12', '%V') AS "%V",
        DATE_FORMAT('2024-12-12', '%v') AS "%v";

    結果:

    +------+------+------+------+
    | %U   | %u   | %V   | %v   |
    +------+------+------+------+
    | 49   | 50   | 49   | 50   |
    +------+------+------+------+

    ご覧のとおり、週番号を返すことは、私たちが望むほど明確であるとは限りません。

    DATE_FORMAT()で使用できるフォーマット文字列/指定子の完全なリストについては、MariaDBフォーマット文字列を参照してください。 。

    YEARWEEK() 機能

    週を取得することは可能です 一年で一気に。 YEARWEEK() 関数は、指定された日付の年と週を返します。

    例:

    SELECT YEARWEEK('2023-01-01');

    結果:

    +------------------------+
    | YEARWEEK('2023-01-01') |
    +------------------------+
    |                 202301 |
    +------------------------+

    結果の年は、その年の最初と最後の週の日付引数の年とは異なる場合があります。

    1年先に進むと、次のようになります。

    SELECT YEARWEEK('2024-01-01');

    結果:

    +------------------------+
    | YEARWEEK('2024-01-01') |
    +------------------------+
    |                 202353 |
    +------------------------+

    WEEK()と同様 関数、YEARWEEK() 関数は、モードを指定するためのオプションの2番目の引数を受け入れます。この関数から得られる実際の結果は、使用されているモードによって異なります。 mode引数を省略した場合、default_week_formatの値 システム変数が使用されます。

    YEARWEEK()の方法をご覧ください それぞれのモードと例の詳細については、MariaDBで動作します。


    1. SQLBulkCopyが存在する場合、挿入または更新する方法はありますか?

    2. BaseColumnsで_COUNTを使用する方法

    3. TransactSQLでNOTEXISTSではなくEXCEPTを使用する場合

    4. JavaストアドプロシージャとPL/SQLストアドプロシージャ