oracle数据库 获得了起始时间和截止时间(可能跨多天), 如何判断这个时间段里有几个7-9点

rt求高手

第1个回答  2012-11-26
declare
vStart date := sysdate;
vEnd date := sysdate + 10;
vResult number;
v7 varchar2(8) := '070000';
v9 varchar2(8) := '090000';
begin
vResult := vEnd - vStart;
-- 开始时间是否大于 7 点
if to_char(vStart, 'hh24miss') > v7 then
vResult := vResult - 1;
end if;
-- 结束时间是否小于 9 点
if to_char(vEnd, 'hh24miss') < v9 then
vResult := vResult - 1;
end if;
dbms_output.put_line('共有 ' || vResult || ' 个(7-9)点');
end;追问

因为涉及到统计,这个还是不能满足需要,想到另一种方案,就是把一条跨好几天的数据分割成多条,分割点为每天0:00,这样就好弄了,这应该用什么方法分割?

追答

创建临时表吧,字段 ( 日期,其它统计字段 ) 每天一条记录
从开始时间到结束时间遍历,如果是在 7-9 点时间段,则插入到临时表中,这样方便统计

本回答被提问者采纳
相似回答