--查询 dc_init_sync_log 表中 beginTime,endTime 与 dc_plan_log 表中的 beginTime,endTime 有重合的记录
SELECT A.* FROM dbo.dc_init_sync_log A inner join   dc_plan_log bon CONVERT(varchar(16), A.beginTime,120)=CONVERT(varchar(16), B.beginTime,120)
 and 
CONVERT(varchar(16), A.endTime,120)=CONVERT(varchar(16), B.endTime,120)/*
id                   dbId                 isInit recordsCount beginTime               endTime                 elapsedSeconds exceptionInfo
-------------------- -------------------- ------ ------------ ----------------------- ----------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
46                   3099897902792705     1      0            2014-08-01 15:54:47.777 2014-08-01 15:56:32.597 105            (1 行受影响)
*/
  

解决方案 »

  1.   

    结果没错啊!
    dc_plan_log 中 id=3的那是 '2014-07-17 20:25:48.000'~'2014-07-31 20:26:04.703'
    包含 dc_init_sync_log 中 id IN (41,42,43,44,45) 在这个时段内啊!哦,dc_plan_log 中 id=2 的也匹配!
      

  2.   

    你的重叠啥意思,是不是对于A中的每一个计划的执行时间内(begintime  之间endtime)只要B表中的计划 有一个在执行就返回该行。 (a.beginTime>= b.beginTime AND a.beginTime<=b.endTime) 
            OR
            (a.endTime>= b.beginTime AND a.endTime<=b.endTime)
     看你的限制条件也有点问题 这2中情况之外还有一种A中的计划从1点到5点,但是B中的计划从2点到4点,肯定有重叠,但是没考虑到!而且因为B中ID=3那一行从7-17 到7-31 肯定满足A表的的前5行了,怎么会只有一行满足条件了?
      

  3.   

    a.begin <= b.end and a.end >= b.begin
      

  4.   

    结果是对的!你还要闹那样?
    虽然你的条件不判定4楼说的那种完全内包含的情况,但是对样例数据的结果没影响。大哥, 你还没有明白我的意思呀?
    我哪敢否定SqlServer输出的结果呀?
    我只是说:我需要的结果是只有一条的……我不是需要一个跨记录范围的比较
    A1   beginTime , endTime
    A2  beginTime , endTimeB1   beginTime , endTime
    B2  beginTime , endTimeA1和B1比, 如果有重叠的则取之
    A1和B2比, 如果有重叠的则取之
    A2和B1比, 如果有重叠的则取之明白了不?
      

  5.   

    就是不明白 dc_init_sync_log 中 id IN (41,42,43,44,45) 的记录怎么是不重叠的,而 id=46 的记录却是重叠的?
    请结合数据,用文字详细解释重叠的定义!
      

  6.   


    dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
    dc_plan_log中根本都没有7月30号的数据
      

  7.   


    dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
    dc_plan_log中根本都没有7月30号的数据请定义重叠!
    请定义重叠
    请定义重叠
      

  8.   


    dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
    dc_plan_log中根本都没有7月30号的数据请定义重叠!
    请定义重叠
    请定义重叠!不好意思, 确实是我自己没有仔细看, 我原先的查询SQL是对的。 多谢了!