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

YEARWEEK()の例– MySQL

    MySQLでは、YEARWEEK() 関数は、指定された日付の年と週を返します。引数として日付を指定すると、関数はそれに応じて結果を返します。

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

    構文

    次の2つの形式のいずれかを使用できます。

    YEARWEEK(date)
    YEARWEEK(date,mode)
    

    場所:

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

    モードが指定されていない場合、モードは0です。 。

    例1-基本的な使用法

    実例を示します。

    SELECT YEARWEEK('2021-01-25') As 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    | 202104 |
    +--------+
    

    日付が異なる例を次に示します。

    SELECT YEARWEEK('1999-12-25') As 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    | 199951 |
    +--------+
    

    例2–モードを指定する

    2番目の引数を指定しない場合、YEARWEEK() 関数は0を使用します モードとして。

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

    SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
    

    結果:

    +--------+
    | Mode 7 |
    +--------+
    | 201946 |
    +--------+
    

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

    モード 最初の曜日 範囲 第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 今年の月曜日

    これらは、WEEK()で使用できる値と同じです。 機能。

    これら2つの関数の違いの1つは、WEEK() 関数は、デフォルトモードをdefault_week_formatから派生させます システム変数(この変数のデフォルト値は0です。 )。 YEARWEEK() 一方、この設定を無視し、0を使用します デフォルト値として(default_week_formatに関係なく) 設定)。

    例3–モードの比較

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

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

    日付1

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

    結果:

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

    日付2

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

    結果:

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

    日付3

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

    結果:

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

    1. 統計がロックされているテーブルを見つける方法

    2. SQLServerへのUTF-16/Unicodeデータの保存

    3. mysql、列名を繰り返し処理します

    4. SQLサーバーでyes/noブールフィールドをどのように作成しますか?