Oracle时间戳和current_date

鲑鱼食者

我有此代码的工作:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章