Oracle SQL - 根据 current_date 更改 WHERE 条件
Posted
技术标签:
【中文标题】Oracle SQL - 根据 current_date 更改 WHERE 条件【英文标题】:Oracle SQL - change WHERE condition depending on current_date 【发布时间】:2021-01-12 17:42:21 【问题描述】:我有一张类似的桌子
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
...
我想编写一个每日查询,根据今天的日期返回一个结果集。如果今天的日期是 25-DEC-2020
或 01-JAN-2020
我想返回 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
条件?
【问题讨论】:
【参考方案1】:你可以使用OR
如下:
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)
【讨论】:
【参考方案2】:你可以使用:
where tradeDate >= trunc(sysdate) and
tradeDate < trunc(sysdate) + interval '2' day
【讨论】:
以上是关于Oracle SQL - 根据 current_date 更改 WHERE 条件的主要内容,如果未能解决你的问题,请参考以下文章