所有
我有一个sql,就像下面在informatica lookup sql中使用的那样。
当时间是凌晨2点到凌晨00点时, select * from table where load_dt = trunc(sysdate)
当时间在第二天00:30到凌晨2点之间时,相同的sql应该读作
select * from table where load_dt = trunc(sysdate-1)
如何在单个sql中创建这两个sql?
有可能吗?
感谢
答案 0 :(得分:0)
我不确定我是否完全理解这个问题但是我假设如果小时不到凌晨2点,你想从sysdate中减去1,否则保持当前的sysdate。
你说过;凌晨2点到凌晨00点和凌晨00点到凌晨2点......但我将其解释如上。Select *
from table
where load_Dt = trunc(sysdate - case
when TO_CHAR(SYSTIMESTAMP,'HH24') < 2 then 1 else 0 end)
或
Select *
from table
where load_Dt = trunc(sysdate - case
when EXTRACT(HOUR FROM SYSTIMESTAMP) < 2 then 1 else 0 end
取决于是否需要时区偏移。
答案 1 :(得分:0)
您可以在截断日期前减去两小时:
select *
from table
where load_dt = trunc(sysdate - 2/24.0) ;
Oracle也支持- interval '2' hour
,但有时候我很老套。