读书人

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

发布时间: 2013-01-11 11:57:35 作者: rapoo

[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 目标表

读书人网 >oracle

热点推荐