交叉时间


ContractedBlock.gif ExpandedBlockStart.gif Code
1  --检查插入的时间是否会与已存在的时间交叉
2  select nvl(count(1),0)
3  into l_exist_time
4  from hek_om_pop_validity_all hpva
5  where hpva.inventory_item_id = :HEK_OM_POP_VALIDITY_V.INVENTORY_ITEM_ID
6  and ((:HEK_OM_POP_VALIDITY_V.START_DATE between hpva.start_date and nvl(hpva.end_date, to_date('9999-12-22','yyyy-mm-dd')))
7  or (:HEK_OM_POP_VALIDITY_V.END_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))
8  or (hpva.start_date between :HEK_OM_POP_VALIDITY_V.START_DATE and nvl(:HEK_OM_POP_VALIDITY_V.END_DATE,to_date('9999-12-22','yyyy-mm-dd'))));

PS. 一行一行相比较。l_exist_time >= 1的时候存在时间交叉。

ContractedBlock.gif ExpandedBlockStart.gif Code
 1 --检查修改的时间是否会与已存在的时间交叉
 2  select nvl(count(1),0)
 3  into l_exist_time
 4  from hek_om_pop_validity_all hpva
 5  where hpva.inventory_item_id = :HEK_OM_POP_VALIDITY_V.INVENTORY_ITEM_ID
 6  --不用与自己比较
 7  and hpva.line_id <> :HEK_OM_POP_VALIDITY_V.LINE_ID
 8  and ((:HEK_OM_POP_VALIDITY_V.START_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))
 9  or (:HEK_OM_POP_VALIDITY_V.END_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))
10  or (hpva.start_date between :HEK_OM_POP_VALIDITY_V.START_DATE and nvl(:HEK_OM_POP_VALIDITY_V.END_DATE,to_date('9999-12-22','yyyy-mm-dd'))));
11

  
  PS. 一行一行进行比较,但要排除本身这一行,然后保证修改的行的起始时间和结束时间都不在其他行。l_exist_time >= 1的时候存在时间交叉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值