计算查询中的日期时间差异
Calculate DateTime difference in query
我有一个 table,其中 START_DATE 列是 DATE 数据类型。我想从当前日期时间获取所有早于最后 30 分钟的 SUBSCRIPTION_ID 。
这是我的查询:
select WF.SUBSCRIPTION_ID,WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0
您可以用另一个条件修改 where
子句:
start_date < sysdate - 30 / (24 * 60)
Oracle 将日期解释为天数值。所以,30 分钟是 30 / (24 * 60)
.
尝试
select WF.SUBSCRIPTION_ID
, WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0
and WF.START_DATE + TO_DSINTERVAL('000 00:30:00') < SYSDATE
;
看看INTERVAL
所以这可能有效,
select WF.SUBSCRIPTION_ID,WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0 and WF.START_DATE < sysdate - INTERVAL '30' minute(1)
我有一个 table,其中 START_DATE 列是 DATE 数据类型。我想从当前日期时间获取所有早于最后 30 分钟的 SUBSCRIPTION_ID 。 这是我的查询:
select WF.SUBSCRIPTION_ID,WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0
您可以用另一个条件修改 where
子句:
start_date < sysdate - 30 / (24 * 60)
Oracle 将日期解释为天数值。所以,30 分钟是 30 / (24 * 60)
.
尝试
select WF.SUBSCRIPTION_ID
, WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0
and WF.START_DATE + TO_DSINTERVAL('000 00:30:00') < SYSDATE
;
看看INTERVAL
所以这可能有效,
select WF.SUBSCRIPTION_ID,WF.START_DATE
from WF_WORKFLOW
where WF.NAME='SIGNUP_MOBILE_PRE_PAID'
and WF.STATUS_ID=0 and WF.START_DATE < sysdate - INTERVAL '30' minute(1)