我有一個SQL,就像下面用於informatica查找sql。
select * from table where load_dt = trunc(sysdate)
時,時間是凌晨2點到上午12點
當時間是上午02時○○nextday上午12時30分之間,相同的SQL應
select * from table where load_dt = trunc(sysdate-1)
看我怎樣才能讓這兩個SQL單一的SQL?
是否有可能?
感謝
我有一個SQL,就像下面用於informatica查找sql。
select * from table where load_dt = trunc(sysdate)
時,時間是凌晨2點到上午12點
當時間是上午02時○○nextday上午12時30分之間,相同的SQL應
select * from table where load_dt = trunc(sysdate-1)
看我怎樣才能讓這兩個SQL單一的SQL?
是否有可能?
感謝
我不知道我完全理解這個問題,但我假設,如果時間不小於2我想從SYSDATE減去1,否則保持當前SYSDATE。
你說的;凌晨2點至凌晨00點,凌晨00點30分至凌晨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
根據時區,如果偏移需要與否。
我試過這個SQL並使用TO_CHAR(SYSTIMESTAMP,'HH24')來獲得小時。 – user1468031
可以截斷日期之前只是減去兩小時。
select *
from table
where load_dt = trunc(sysdate - 2/24.0) ;
Oracle還支持- interval '2' hour
,但我老式的時候。
使用case語句來計算確定是否需要從sysdate中減去0或1的時間。取決於您是否需要考慮區域偏移量,您可以使用extract或to_char()https://community.oracle.com/thread/2422420?tstart=0來提取小時並檢查它是否小於2 – xQbert
應該怎樣在第二天00:00至00:30之間發生? – xQbert
表格的加載時間從早上2.點到00點(每30分鐘運行一次)。當負載運行在這段時間(需要當天)時。當它運行在00到凌晨2點,它需要第二天,並創建重複 – user1468031