Where条款中的用例说明___使用日期范围为BETWEEN



我正试图根据我们是否已经过了当月的第一个工作日,将日期筛选到特定的范围。

Oracle似乎不喜欢我使用BETWEEN

WHEN   
TO_DATE(myDate,'YYYYMMDD')=CASE WHEN TO_DATE(SYSDATE-1) - TO_DATE(last_day(add_months(sysdate, -1))+6)>0 
THEN  
TO_DATE(last_day(add_months(sysdate, -1))+1, 'YYYYMMDD') --AND to_date(TRUNC(SYSDATE) - 1, 'YYYYMMDD')
Else   
TO_DATE(last_day(add_months(sysdate, -2))+1, 'YYYYMMDD') --AND to_date(TRUNC(SYSDATE) - 1, 'YYYYMMDD')
END

请让我知道如何纠正这个问题。

如果您希望日期等于或晚于当月的第一个星期一,您可以执行:

to_date(my_date, 'YYYYMMDD') >= next_day(trunc(sysdate, 'MM') - 1, 'MONDAY')

trunc(sysdate, 'MM') - 1会给您上个月的最后一天。然后next_day(..., 'MONDAY')会给你下周一。

您可以根据的定义更改日期名称。此外,值得注意的是,日期名称(next_day()的第二个参数(必须以会话的语言提供。

最新更新