首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

[Oracle] 一个求汇总时间的有关问题. . . 求教

2013-01-11 
[Oracle] 一个求汇总时间的问题. . . 求教!本帖最后由 Lin_ms 于 2013-01-08 16:54:34 编辑表tableA里面有

[Oracle] 一个求汇总时间的问题. . . 求教!
本帖最后由 Lin_ms 于 2013-01-08 16:54:34 编辑 表tableA里面有开始工作时间 time_s 和结束工作时间 time_t, 其余时间都是休息时间:

     time_s                 time_t
20130102080000          20130103200000
20130105090000          20130106180000
20130107140000          20130107210000
        ...                              ....
        ...                              ....
给定一个时间,比如当前(20130108165000), 求截止到当前,休息时间总共为多少天?
这个SQL语句应该怎么写呢?大家帮帮忙, 先谢了!
Oracle SQL 时间汇总
[解决办法]
带小数的

 

select to_date(substr('20130103200000',1,4)
[解决办法]

'-'
[解决办法]
substr('20130103200000',5,2)
[解决办法]
'-'
[解决办法]
substr('20130103200000',7,2)
[解决办法]

' '
[解决办法]
substr('20130103200000',9,2)
[解决办法]
':'
[解决办法]
substr('20130103200000',11,2)
[解决办法]

':'
[解决办法]
substr('20130103200000',13,2),'yyyy-mm-dd hh24:mi:ss')

 - 
 to_date(substr('20130102080000',1,4)
[解决办法]

'-'
[解决办法]
substr('20130102080000',5,2)
[解决办法]
'-'
[解决办法]
substr('20130102080000',7,2)
[解决办法]

' '
[解决办法]
substr('20130102080000',9,2)
[解决办法]
':'
[解决办法]
substr('20130102080000',11,2)
[解决办法]

':'
[解决办法]
substr('20130102080000',13,2),'yyyy-mm-dd hh24:mi:ss')



 from dual;

取整的
select trunc(to_date(substr('20130103200000',1,4)
[解决办法]

'-'
[解决办法]
substr('20130103200000',5,2)
[解决办法]
'-'
[解决办法]
substr('20130103200000',7,2)
[解决办法]

' '
[解决办法]
substr('20130103200000',9,2)
[解决办法]
':'
[解决办法]
substr('20130103200000',11,2)
[解决办法]

':'
[解决办法]
substr('20130103200000',13,2),'yyyy-mm-dd hh24:mi:ss')

 - 
 to_date(substr('20130102080000',1,4)
[解决办法]

'-'
[解决办法]
substr('20130102080000',5,2)
[解决办法]
'-'
[解决办法]
substr('20130102080000',7,2)
[解决办法]

' '
[解决办法]
substr('20130102080000',9,2)
[解决办法]
':'
[解决办法]
substr('20130102080000',11,2)
[解决办法]

':'
[解决办法]
substr('20130102080000',13,2),'yyyy-mm-dd hh24:mi:ss'))

 from dual;

把那个换成具体的字段就行了。这是我的做法。
[解决办法]
是不是应该也给定个起始时间,比如v_beginTime

select v_endTime - v_beginTime - sum(time_t - time_s)
from tableA


[解决办法]
你时间工时的SQL吧?
如果是这样就不需要如此复杂了,
select sum(to_date(time_t,'yyyymmddhh24miss')-to_date(time_s,'yyyymmddhh24miss')) from 目标表
当然你可能要计算到当前时间:
select sum(to_date(case when time_t is null then
                      to_char(sysdate,'yyyymmddhh24miss')
                     else
                      time_t
                   end,
                   'yyyymmddhh24miss') -


           to_date(time_s, 'yyyymmddhh24miss'))
  from 目标表

热点排行