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

WEEK()の例– MySQL

    MySQLでは、WEEK()を使用できます 指定された日付の週番号を取得する関数。 「週番号」とは、その年の週を意味します。

    この関数を使用するには、引数として日付を指定するだけで、週番号が返されます。

    また、週を日曜日と月曜日のどちらで開始するか、および週を0から53または1から53の範囲にするかどうかを指定するオプションもあります。

    構文

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

    WEEK(date[,mode])
    

    場所:

    • date 週番号を返す日付です。
    • mode は、週を日曜日と月曜日のどちらで開始するか、および週を0から53または1から53の範囲にするかを指定する数値です。可能なモード値については、以下の表を参照してください。

    例1-基本的な使用法

    実例を示します。

    SELECT WEEK('2021-01-25') As 'Week Number';
    

    結果:

    +-------------+
    | Week Number |
    +-------------+
    |           4 |
    +-------------+
    

    これは、年末に近い日付の例です。

    SELECT WEEK('2021-12-25') As 'Week Number';
    

    結果:

    +-------------+
    | Week Number |
    +-------------+
    |          51 |
    +-------------+
    

    例2–モードを指定する

    2番目の引数を指定しない場合、WEEK() 関数は、default_week_formatで指定されたモードを使用します システム変数。この変数のデフォルト値は0です。 。

    ただし、使用するモードを指定するための2番目の引数を指定するオプションもあります。例:

    SELECT WEEK('2019-10-17', 7) AS 'Mode 7';
    

    結果:

    +--------+
    | Mode 7 |
    +--------+
    |     41 |
    +--------+
    

    可能なモード値は次のとおりです。

    モード 最初の曜日 範囲 第1週は最初の週です…
    0 日曜日 0-53 今年の日曜日
    1 月曜日 0-53 今年は4日以上
    2 日曜日 1-53 今年の日曜日
    3 月曜日 1-53 今年は4日以上
    4 日曜日 0-53 今年は4日以上
    5 月曜日 0-53 今年の月曜日
    6 日曜日 1-53 今年は4日以上
    7 月曜日 1-53 今年の月曜日

    週1が「今年4日以上」の最初の週であるモード値の場合、週はISO 8601:1988に従って番号が付けられます:

    • 1月1日を含む週の新年が4日以上の場合、それは第1週です。
    • それ以外の場合は、前年の最後の週であり、次の週は第1週です。

    例3–モードの比較

    使用しているモードに応じてさまざまな結果を得る方法を簡単に比較します。

    次の3つの例では、同じコードを使用していますが、日付が3つ異なります。これらの日付は連続しています– 1月5日、6日、7日に発生します。ご覧のとおり、正確な日付と使用されているモードによって、結果は大きく異なる可能性があります。

    日付1

    SET @date = '2019-01-05';
    SELECT 
      WEEK(@date, 0) AS 'Mode 0',
      WEEK(@date, 1) AS 'Mode 1',
      WEEK(@date, 2) AS 'Mode 2',
      WEEK(@date, 3) AS 'Mode 3',
      WEEK(@date, 4) AS 'Mode 4',
      WEEK(@date, 5) AS 'Mode 5',
      WEEK(@date, 6) AS 'Mode 6',
      WEEK(@date, 7) AS 'Mode 7';
    

    結果:

    +--------+--------+--------+--------+--------+--------+--------+--------+
    | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    |      0 |      1 |     52 |      1 |      1 |      0 |      1 |     53 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    

    日付2

    SET @date = '2019-01-06';
    SELECT 
      WEEK(@date, 0) AS 'Mode 0',
      WEEK(@date, 1) AS 'Mode 1',
      WEEK(@date, 2) AS 'Mode 2',
      WEEK(@date, 3) AS 'Mode 3',
      WEEK(@date, 4) AS 'Mode 4',
      WEEK(@date, 5) AS 'Mode 5',
      WEEK(@date, 6) AS 'Mode 6',
      WEEK(@date, 7) AS 'Mode 7';
    

    結果:

    +--------+--------+--------+--------+--------+--------+--------+--------+
    | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    |      1 |      1 |      1 |      1 |      2 |      0 |      2 |     53 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    

    日付3

    SET @date = '2019-01-07';
    SELECT 
      WEEK(@date, 0) AS 'Mode 0',
      WEEK(@date, 1) AS 'Mode 1',
      WEEK(@date, 2) AS 'Mode 2',
      WEEK(@date, 3) AS 'Mode 3',
      WEEK(@date, 4) AS 'Mode 4',
      WEEK(@date, 5) AS 'Mode 5',
      WEEK(@date, 6) AS 'Mode 6',
      WEEK(@date, 7) AS 'Mode 7';
    

    結果:

    +--------+--------+--------+--------+--------+--------+--------+--------+
    | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    |      1 |      2 |      1 |      2 |      2 |      1 |      2 |      1 |
    +--------+--------+--------+--------+--------+--------+--------+--------+
    

    1. データが存在しない場合でも月ごとのレコードを選択するMysql

    2. 並列計画の開始方法–パート1

    3. ゼロからデータベースモデルを作成する方法

    4. OracleJobSchedulerを使用したIRIデータ統合ジョブの自動化