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

2つの日付の間の金曜日の数

    これでうまくいきます:

    select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
    from data
    

    私がそれを分解した場合、おそらく最高です。 NEXT_DAY関数は、(この場合は金曜日)の翌日を返します。 日付。

    したがって、d1の後の最初の金曜日を見つけるには、次のようになります。

    next_day( d1, 'FRI')
    

    ただし、d1が金曜日で、次の金曜日に戻る場合は、次のように調整します。

    next_day( d1-1, 'FRI')
    

    同様に、d2までの先週の金曜日を見つけるには、次のようにします。

    next_day( d1-7, 'FRI')
    

    2を引くと、日数が得られます。同じ日付の場合は0、1週間離れている場合は7などです。

    next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI') 
    

    週に変換:

    (next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
    

    最後に、同じ日付の場合は0になりますが、実際には金曜日が1であるため、次のように1つ追加します。

    ((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1
    


    1. SQLServerの一意の制約とは-SQLServer/TSQLチュートリアルパート95

    2. MySQLでは、数字を引用する必要がありますか?

    3. MySQL:同じテーブルを複数回結合するにはどうすればよいですか?

    4. 分類を使用したフィールドルールの適用