求SQL语句--两个时间范围是否有交集

cracker234 2010-06-28 10:58:26
不用函数,在SQL里写两个时间范围有交集则成立

例如:
start_date_time stop_date_time 两个字段

判断[start_date_time stop_date_time]与[20100628 07 20100629 08]存在交集则成立!
...全文
948 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyzjlx 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ldw2545398 的回复:]

这么都这么麻烦 直接 判断 20100628 07 在[start_date_time stop_date_time]之间, 或者20100629 08在[start_date_time stop_date_time]之间 。就有交集
[/Quote]

少考虑了一种情况,[start_date_time stop_date_time]在[20100628 07,20100629 08] 之间, 也有可能的啊,所以要或一下第二种情况。
minitoy 2010-11-09
  • 打赏
  • 举报
回复
SELECT *
FROM TEMP_TABLE
WHERE not('20100628'<start_date_time or '20100626'>stop_date_time)
minitoy 2010-11-09
  • 打赏
  • 举报
回复
SELECT *
FROM TEMP_TABLE
WHERE ('20100626' BETWEEN start_date_time AND stop_date_time) OR ('20100628' BETWEEN start_date_time AND stop_date_time) or ('20100626' <start_date_time and '20100628' > stop_date_time)
letian_w 2010-11-09
  • 打赏
  • 举报
回复
SELECT *
FROM TEMP_TABLE
WHERE ( ('20100626' BETWEEN start_date_time AND stop_date_time) OR ('20100628' BETWEEN start_date_time AND stop_date_time) )
振乾 2010-10-14
  • 打赏
  • 举报
回复

start_date_time stop_date_time]与[20100628 07 20100629 08

where 20100629 08>=start_date_time and 20100628<=stop_date_time

即可

ldw2545398 2010-06-29
  • 打赏
  • 举报
回复
这么都这么麻烦 直接 判断 20100628 07 在[start_date_time stop_date_time]之间, 或者20100629 08在[start_date_time stop_date_time]之间 。就有交集
jack0603 2010-06-28
  • 打赏
  • 举报
回复
根据LZ的意思就是说,在一张表中查询,这两个字段,和给定的两个时间是否存在交集
SQL如下

SELECT stop_date_time,start_date_time FROM TEMP_TABLE
INTERSECT
SELECT '20100626 07' AS stop_date_time,'20100629 08' AS start_date_time
FROM TEMP_TABLE2
jdsnhan 2010-06-28
  • 打赏
  • 举报
回复
stop_date_time - 20100626 07 或 20100629 08 - start_date_time 存在大于0,即存在交集。

cuiyanzhi 2010-06-28
  • 打赏
  • 举报
回复
使用between,stop_date_time,start_date_time 两个时间都在你说的时间条件中就符合条件
:)
vanjayhsu 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jack0603 的回复:]
根据LZ的意思就是说,在一张表中查询,这两个字段,和给定的两个时间是否存在交集
SQL如下

SQL code

SELECT stop_date_time,start_date_time FROM TEMP_TABLE
INTERSECT
SELECT '20100626 07' AS stop_date_time,'20100629 08' AS start_date_time ……
[/Quote]

感觉是这个意思。
ztlover 2010-06-28
  • 打赏
  • 举报
回复
if ((start_date_time >= to_date('20100626 070101','YYYYMMDD HH24MiSS')
&& start_date_time <= to_date('20100629 080101','YYYYMMDD HH24MiSS'))
||
(stop_date_time >= to_date('20100626 070101','YYYYMMDD HH24MiSS')
&& stop_date_time <= to_date('20100629 080101','YYYYMMDD HH24MiSS')))
inthirties 2010-06-28
  • 打赏
  • 举报
回复
lz可以把你的需求描述更详细一些莫。

能有个例子就最好了。

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧