[英]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.