简体   繁体   English

Oracle时间戳和current_date

[英]Oracle timestamp and current_date

I have this code working: 我有这段代码工作:

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 
     )

But now, in place of the string '2015/06/03', I need to use the variable current_date so that ixdtl.timestamp is between 3AM yesterday and 3AM today. 但是现在,代替字符串'2015/06/03',我需要使用变量current_date,以便ixdtl.timestamp在昨天凌晨3点到今天凌晨3点之间。 Also, the rundate needs to be yesterday or today. 另外,运行日期必须是昨天或今天。

How can I do this? 我怎样才能做到这一点?

CURRENT_DATE is the current date and time . CURRENT_DATE是当前日期和时间 If you want just the date part, use the TRUNC function. 如果只需要日期部分,请使用TRUNC函数。

To get 3AM yesterday and 3AM today, it's probably easier to subtract 21 hours from today at midnight for 3AM yesterday, add 3 hours to today at midnight for 3AM Today, and use >= / < instead of BETWEEN 要获得昨天凌晨3点和今天凌晨3点,可能更容易的是从昨天的午夜3点到今天,从今天的午夜21点减去今天的凌晨3点,到今天的午夜3点,然后用> = / <代替BETWEEN

ixdtl.timestamp >= TRUNC(CURRENT_DATE) - INTERVAL '21' HOUR AND
ixdtl.timestamp < TRUNC(CURRENT_DATE) + INTERVAL '3' HOUR

For today and yesterday, look for >= one day ago and < tomorrow. 对于今天和昨天,请查找> =前一天而<明天。

ixdtl.RUNDATE >= TRUNC(CURRENT_DATE) - INTERVAL '1' DAY AND
ixdtl.RUNDATE < TRUNC(CURRENT_DATE) + INTERVAL '1' DAY

Put them all together and you get: 将它们放在一起,您将获得:

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

Your predicate should read: 您的谓词应为:

ixdtl.timestamp
  BETWEEN trunc(CURRENT_DATE) - INTERVAL '21' HOUR
  AND     trunc(CURRENT_DATE) + INTERVAL '3'  HOUR

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM