Oracle SQL-根据当前日期更改位置条件

Oracle SQL-根据当前日期更改位置条件,sql,oracle,where-clause,Sql,Oracle,Where Clause,我有一张类似于的桌子 TradeDate | Widgets 12-DEC-2020 6 13-DEC-2020 3 13-DEC-2020 9 14-DEC-2020 3 15-DEC-2020 12 15-DEC-2020 4 ... 08-JAN-2020 11 ... 我想编写一个每日查询,根据今天的日期返回结果集。如果今天的日期是2020年12月25日或2020年1月1日我想返回TradeDate是今

我有一张类似于的桌子

TradeDate        | Widgets
12-DEC-2020      6
13-DEC-2020      3
13-DEC-2020      9
14-DEC-2020      3
15-DEC-2020      12
15-DEC-2020      4
...
08-JAN-2020      11
...
我想编写一个每日查询,根据今天的日期返回结果集。如果今天的日期是
2020年12月25日
2020年1月1日
我想返回
TradeDate
是今天日期或1天后的行

TradeDate        | Widgets
25-DEC-2020      26
25-DEC-2020      13
26-DEC-2020      19
26-DEC-2020      34
否则,如果日期不是12月25日、1月1日或其他指定日期,我只希望检索具有当前日期的记录。如果今天的日期是12月13日,那么结果将显示:

    TradeDate        | Widgets
    13-DEC-2020      3
    13-DEC-2020      9
我以为我在
WHERE
中使用了
CASE

SELECT TradeDate, Widgets FROM table
WHERE 
CASE WHEN (current_date like '25-DEC%' OR current_date like '01-JAN%') 
  THEN (TradeDate = current_date or TradeDate = current_date +1 )
  ELSE TradeDate = Current_date
但这是行不通的。有没有一个简单的方法来实现我所追求的?动态
何处
条件?

您可以使用:

where tradeDate >= trunc(sysdate) and
      tradeDate < trunc(sysdate) + interval '2' day
其中tradeDate>=trunc(sysdate)和
交易日期
您可以使用:

where tradeDate >= trunc(sysdate) and
      tradeDate < trunc(sysdate) + interval '2' day
其中tradeDate>=trunc(sysdate)和
交易日期
您可以按如下方式使用

SELECT TradeDate, Widgets
  FROM table
 WHERE (to_char(sysdate,'dd-MON') in ('25-DEC','01-JAN')
         AND TRADEDATE >= TRUNC(SYSDATE) 
         AND TRADEDATE < TRUNC(SYSDATE) + 2
        )
        OR TRADEDATE = TRUNC(SYSDATE)
选择交易日期,小部件
从桌子上
其中(至('25-DEC','01-JAN')中的字符(sysdate,'dd-MON'))
和交易日期>=TRUNC(SYSDATE)
和TRADEDATE
您可以按如下方式使用

SELECT TradeDate, Widgets
  FROM table
 WHERE (to_char(sysdate,'dd-MON') in ('25-DEC','01-JAN')
         AND TRADEDATE >= TRUNC(SYSDATE) 
         AND TRADEDATE < TRUNC(SYSDATE) + 2
        )
        OR TRADEDATE = TRUNC(SYSDATE)
选择交易日期,小部件
从桌子上
其中(至('25-DEC','01-JAN')中的字符(sysdate,'dd-MON'))
和交易日期>=TRUNC(SYSDATE)
和TRADEDATE