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

Oracle BI:先週のすべてのレコードを選択

    next_day および通常の日付演算。以下のコードはかなり近いはずですが、テストされておらず、いくつかのコーナーケースで失敗する可能性がありますが、少なくとも一般的なアイデアは得られます:)

    where resolved_date >= next_day( trunc(sysdate) - interval '14' day, 'SUN')
      and resolved_date <  next_day( trunc(sysdate) - interval '7'  day, 'SUN')
    

    trunc(sysdate) 日付を毎日切り捨てます。 2011-04-1923:32:34は2011-04-1900:00:00になります。つまり、時間コンポーネントを削除します。next_day(sysdate, 'SUN') 次の日曜日を返します。 sysdateがたまたま日曜日の場合、次の日曜日が返されます。
    重要 :曜日の名前はセッションと同じ言語である必要があります。
    interval 物事は、日付から異なる時間単位を加算/減算する標準的な方法にすぎません。

    すべてをまとめると、2011年4月19日のロジックは次のようになります。

    1. sysdateの切り捨て=>2011-04-1900:00:00
    2. 14日を引く=>2011-04-0500:00:00
    3. 次の日曜日を探す=>2011-04-1000:00:00

    ...そして

    1. sysdateの切り捨て=>2011-04-1900:00:00
    2. 7日を引く=>2011-04-1200:00:00
    3. 次の日曜日を探す=>2011-04-1700:00:00

    ..次のクエリが発生します:

     where resolved_date >= timestamp '2011-04-10 00:00:00'
       and resolved_date <  timestamp '2011-04-17 00:00:00'
    

    10:thの最初の1秒以降、17:thの最初の1秒より前に発生したすべてのresolved_datesが含まれます。 >=に注意してください および< betweenと同等ではありません 。

    パフォーマンスに関する注意:Oracleが日付範囲を7日と正しく推定し、正しい結合順序/方法が使用されていることを確認します。クエリがしばらく実行されると予想される場合は、上記のようにオンザフライで計算する代わりに、アプリケーションで日付を計算して日付文字として提供する余裕があります。



    1. スレッドメインjava.lang.IncompatibleClassChangeErrorの例外:インターフェースorg.apache.hadoop.mapreduce.JobContextが見つかりましたが、クラスが予期されていましたか?

    2. 過去10日間の行を取得する

    3. PHP:1つのmysql_queryステートメントで複数のSQLクエリ

    4. MariaDBで日付に年を追加する6つの方法