Oracle两个日期区间是否重合,持续求救...时间区间重合、包含,更新算法!!

持续求救...时间区间重合、包含,更新算法!! 谢谢

业务是这样的 unit_code->feeder_id->low_transformer_id->USER_code 这是一个层次关系

2:时间段会出现包含关系 ,如图(问题数据)同一个用户,当他的break_type_id一样时出现区间包含关系是由于他的

reason字段不同

3:同一个用户还可能break_type_id不同,但是也存在时间区间包含关系

4:也有可能以上两种情况都存在

总之:数据如图(问题数据)

我通过存储过程,使用游标,然后建立临时表将这种数据均处理掉了让后将数据插入了一个新的表中,但是客户只想在原表上处理

也就是处理成如下的样子

every_sj 为每条的时间间隔由 end_time-start_time

hushu    为除去区间包含后的实际时间间隔。

如图:最终处理后的数据

这种情况我感觉无法更新,希望高手能给出解答或者思路 谢谢!

这个表一个月下来要1400000多数据,而且是增量抽取的(一天一抽),这些我都暂时不考虑,头疼ing。

建表语句:

create table TEST

(

BREAK_TYPE_ID      NUMBER(2),

UNIT_CODE          VARCHAR2(12),

LOW_TRANSFORMER_ID VARCHAR2(32),

USER_CODE          VARCHAR2(32) not null,

START_TIME         DATE not null,

END_TIME           DATE,

TD_MONTH           VARCHAR2(6),

FEEDER_ID          VARCHAR2(32),

EVERY_SJ           NUMBER(14,4),

HUSHU              NUMBER(12),

REASON             VARCHAR2(100)

)

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (11, 'BBB', '1', '2323232', to_date('17-03-2009 08:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (11, 'BBB', '1', '2323232', to_date('17-03-2009 10:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 20:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '2');

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (22, 'BBB', '1', '2323232', to_date('17-03-2009 11:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 17:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (11, '

f97f5bb29cd6ed95ef7fe4da7d57412d.gif BBB', '2', '2323', to_date('17-03-2009 11:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 17:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (33, 'BBB', '1', '2323232', to_date('17-03-2009 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 14:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');

insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)

values (22, 'BBB', '1', '2323232', to_date('18-03-2009 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('18-03-2009 14:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');

可能是太着急了,一直没有发现,我贴的数据确实存在问题,end_time-start_time 有几条记录多算了一个小时哦 ...

f97f5bb29cd6ed95ef7fe4da7d57412d.gif

[本帖最后由 nvlixue 于 2009-3-23 13:14 编辑]

问题数据.JPG

(248.7 KB, 下载次数: 5)

2009-3-18 10:57 上传

a9e439422dfa5ee454465ca071732e60.gif

9da8c69fd21b85dfd654e308afd6bd05.gif

dd06a1abc3fb84da465ff4eff32374f6.gif

最终处理后数据.JPG

(38.88 KB, 下载次数: 4)

2009-3-18 10:57 上传

a9e439422dfa5ee454465ca071732e60.gif

9da8c69fd21b85dfd654e308afd6bd05.gif

dd06a1abc3fb84da465ff4eff32374f6.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值