我有此代码的工作:
ixdtl.timestamp between
to_date('2015/06/03', 'YYYY/MM/DD')+ INTERVAL '03:0:0.0' HOUR TO SECOND
AND to_date('2015/06/03', 'YYYY/MM/DD')+ INTERVAL '1 2:59:59.99' DAY TO SECOND
AND
(
icrun.RUNDATE BETWEEN to_date('2015/06/03', 'YYYY/MM/DD')
AND to_date('2015/06/03', 'YYYY/MM/DD')+ INTERVAL '1' DAY
)
但是现在,代替字符串'2015/06/03',我需要使用变量current_date,以便ixdtl.timestamp在昨天凌晨3点到今天凌晨3点之间。另外,运行日期必须是昨天或今天。
我怎样才能做到这一点?
CURRENT_DATE
是当前日期和时间。如果只需要日期部分,请使用此TRUNC
功能。
要获得昨天凌晨3点和今天凌晨3点,可能更容易的是从昨天午夜3点到今天凌晨3点,今天凌晨3点,今天凌晨3点,从今天起减去21小时,并使用> = / <代替 BETWEEN
ixdtl.timestamp >= TRUNC(CURRENT_DATE) - INTERVAL '21' HOUR AND
ixdtl.timestamp < TRUNC(CURRENT_DATE) + INTERVAL '3' HOUR
对于今天和昨天,请查找> =一天前和<明天。
ixdtl.RUNDATE >= TRUNC(CURRENT_DATE) - INTERVAL '1' DAY AND
ixdtl.RUNDATE < TRUNC(CURRENT_DATE) + INTERVAL '1' DAY
将它们放在一起,您将获得:
WHERE ixdtl.timestamp >= TRUNC(CURRENT_DATE) - INTERVAL '21' HOUR
AND ixdtl.timestamp < TRUNC(CURRENT_DATE) + INTERVAL '3' HOUR
AND ixdtl.RUNDATE >= TRUNC(CURRENT_DATE) - INTERVAL '1' DAY
AND ixdtl.RUNDATE < TRUNC(CURRENT_DATE) + INTERVAL '1' DAY
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句