求设备故障时间

mich_mia 2015-03-25 03:06:30

如图,有一张表,我要统计出id为84的设备从8-4到8-25之间的故障总时间,各字段说明如下
startTime 故障开始时间 endTime故障结束时间 id代表设备编号,
求sql
...全文
328 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
binsweet 2015-03-26
  • 打赏
  • 举报
回复
引用 1 楼 wildwave 的回复:
SELECT sum(LEAST(endtime,DATE'2014-8-25'+1)- GREATEST(starttime,DATE'2014-8-4')) FROM 表 WHERE ID=84 AND starttime<DATE'2014-8-25'+1 AND endtime>=DATE'2014-8-4'
版主方法正确,考虑了两个边界数据的处理
lyangsoft 2015-03-25
  • 打赏
  • 举报
回复
引用 1 楼 wildwave 的回复:
SELECT sum(LEAST(endtime,DATE'2014-8-25'+1)- GREATEST(starttime,DATE'2014-8-4')) FROM 表 WHERE ID=84 AND starttime<DATE'2014-8-25'+1 AND endtime>=DATE'2014-8-4'
嗯嗯 没想到,非常好的用法,学习了
lyangsoft 2015-03-25
  • 打赏
  • 举报
回复
SELECT DEVADDR, DEPTID, DEVNAME, DEVNO, SUM(ENDTIME - STARTTIME)
  FROM TABLE_NAME
 WHERE STARTTIME >= TO_DATE('2014-08-04 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
   AND ENDTIME < TO_DATE('2014-08-26 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
 GROUP BY DEVADDR, DEPTID, DEVNAME, DEVNO;
小灰狼W 2015-03-25
  • 打赏
  • 举报
回复
SELECT sum(LEAST(endtime,DATE'2014-8-25'+1)- GREATEST(starttime,DATE'2014-8-4')) FROM 表 WHERE ID=84 AND starttime<DATE'2014-8-25'+1 AND endtime>=DATE'2014-8-4'

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧