计算工作时间的问题
[@more@]网上很多这个方法,但是发现大部分都是PL/SQL的。所以自己准备实验下看能否用一个SQL语句来实现。
业务是24小时运作,以下四个时间段是休息时间:
01:00--03:00
07:00--08:30
12:00--13:30
18:00--18:50
我的解决方法:
with c as(
select to_date('2:30','hh24:mi')+rownum/1440 a from dual
connect by to_date('2:30','hh24:mi')+rownum/1440<30 /> start with rownum=1)
select count(*) from c
where c.a<00 /> (c.a>to_date('03:00','hh24:mi') and c.a<00 /> (c.a>to_date('08:30','hh24:mi') and c.a<00 /> (c.a>to_date('13:30','hh24:mi') and c.a<00 /> c.a>to_date('18:50','hh24:mi');
这个是计算早上2:30分到早上5:30的案例
也可以另外写个表,然后把休息时间(起始时间~结束时间)写进去。这样会灵活很多