请帮我解决这个问题。使用oracle获取范围数据
我有一个包含用户每天检查(checktype = I)和检出(checktype = 0)时间的表,并且我希望每个用户发生的检查总时间大于08:00 AM在特定日期范围内。
我正在使用下面的查询,但只处理每个查询不在一个范围内的一天,所以我必须使用javascript来获取每个用户的延迟量(> 08:00 AM),例如从01/06/2012至06/06/2012
请帮助我在每个用户的时间> 08:00 AM(例如:userid 708)从例如:01/06/2012到06/06/2012在单个查询中。
with tt as
(
select TO_DATE('01/06/2012 08:00:00','dd/mm/yyyy hh24:mi:ss') date1 ,
checktime date2
from
checkinout
where
userid = '708' and
to_char(checktime,'dd/mm/yyyy') = '01/06/2012' and
checktype='I' -- checktype I is check in
) , t2 as
(
select numtodsinterval(date2 - date1,'day') dsinterval from tt
)
select extract(hour from dsinterval) || ' hours ' ||
extract(minute from dsinterval) || ' minutes ' ||
round(extract(second from dsinterval)) || ' seconds' late from t2