Мое требование состоит в том, чтобы получить данные определенного диапазона дат в Oracle следующим образом:

CompletedDate = Range between First Day of Previous Month @12:00AM to First Day of Current Month @4:00PM

А также

CompleteDate = Range between previous Friday at 4:31 PM and current Friday at 4:30 PM

Можете ли вы дать мне решение.

0
Ayan Bhuin 1 Июн 2020 в 15:31

3 ответа

Лучший ответ

Это было бы

select *
from your_table
where date_column between add_months(trunc(sysdate, 'mm'), -1) 
                      and trunc(sysdate, 'mm') + 16/24

И

select *
from your_table
where date_column between next_day(trunc(sysdate), 'FRIDAY') - 7 + 16/24 + 31/(24*60)
                      and next_day(trunc(sysdate), 'FRIDAY') + 16/24 + 30/(24*60)
0
Littlefoot 1 Июн 2020 в 12:36

Вы можете использовать операции с датами следующим образом:

--scenario 1
SELECT * FROM YOUR_TABLE
WHERE DATE_COLUMN BETWEEN ADD_MONTHS(TRUNC(SYSDATE,'MON'), -1) 
    AND TRUNC(SYSDATE,'MON') + INTERVAL '16' HOUR;

--scenario 2
SELECT * FROM YOUR_TABLE
WHERE DATE_COLUMN BETWEEN NEXT_DAY(TRUNC(SYSDATE) - INTERVAL '8' DAY,'FRI') 
                          + INTERVAL '16' HOUR + INTERVAL '31' MINUTE 
    AND NEXT_DAY(TRUNC(SYSDATE) - INTERVAL '1' DAY,'FRI') + INTERVAL '16' HOUR;
0
ORA_Dentist 1 Июн 2020 в 12:43

Вы, кажется, хотите:

where (CompleteDate >= add_months(trunc(sysdate, 'MON'), -1)  and
       CompleteDate < trunc(sysdate, 'MON')
      ) or
      (CompleteDate < next_day(trunc(sysdate), 'FRIDAY') + interval '14' hour + interval '30' minute and
       CompleteDate > next_day(trunc(sysdate), 'FRIDAY') - interval '7' day + interval '14' hour + interval '30' minute
      )
0
Gordon Linoff 1 Июн 2020 в 12:40