簡體   English   中英

Oracle - 從特定時間的上個月第一天到特定時間的當月第一天獲取數據

[英]Oracle - get data from first day of previous month at particular time to first day of current month at particular time

我的要求是在 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

你能給我一個解決方案嗎?

那將是

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)

你似乎想要:

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
      )

您可以按如下方式使用日期操作:

--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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM