--查询 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 行受影响)
*/
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 行受影响)
*/
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 的也匹配!
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行了,怎么会只有一行满足条件了?
虽然你的条件不判定4楼说的那种完全内包含的情况,但是对样例数据的结果没影响。大哥, 你还没有明白我的意思呀?
我哪敢否定SqlServer输出的结果呀?
我只是说:我需要的结果是只有一条的……我不是需要一个跨记录范围的比较
A1 beginTime , endTime
A2 beginTime , endTimeB1 beginTime , endTime
B2 beginTime , endTimeA1和B1比, 如果有重叠的则取之
A1和B2比, 如果有重叠的则取之
A2和B1比, 如果有重叠的则取之明白了不?
请结合数据,用文字详细解释重叠的定义!
dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
dc_plan_log中根本都没有7月30号的数据
dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
dc_plan_log中根本都没有7月30号的数据请定义重叠!
请定义重叠!
请定义重叠!
dc_init_sync_log表中的41到45与dc_plan_log表中的哪条记录有重叠?
dc_plan_log中根本都没有7月30号的数据请定义重叠!
请定义重叠!
请定义重叠!不好意思, 确实是我自己没有仔细看, 我原先的查询SQL是对的。 多谢了!