あなたはTRUNC (date)機能を使用して、現在の日付から、前の週の開始日と終了日を計算することができます。
たとえば、月曜日2017-09-11
、次に金曜日2017-09-15
でクエリを実行しており、クエリで前週のレポートが生成されているとします。
このクエリは、現在の週の開始日を計算します。
SELECT trunc(date '2017-09-11', 'IW') as x,
trunc(date '2017-09-15', 'IW') as y
from dual;
X Y
---------------- ----------------
2017/09/11 00:00 2017/09/11 00:00
上記の日付からsubstract 1日、前の週の開始日を計算し、再びTRUCTを使用するには:
SELECT trunc(trunc(date '2017-09-11', 'IW') - 1, 'IW') as start_last_week,
trunc(trunc(date '2017-09-15', 'IW') - 1, 'IW') as start_last_week1
from dual;
START_LAST_WEEK START_LAST_WEEK1
---------------- ----------------
2017/09/04 00:00 2017/09/04 00:00
だから、あなたのクエリはちょうどこの句を使用して(前の週の開始と<よりも日付を> =現在の週の開始):
WHERE DAY_DATE>= trunc(trunc(sysdate, 'IW') - 1, 'IW')
and DAY_DATE < trunc(sysdate, 'IW')
それが動作https://stackoverflow.com/questions/32584375/oracle-sql-query-get-data-from-last-week-monday-saturday –