日期:2014-05-16 浏览次数:20992 次
select * from roomBookInfo A where exists(select 1 from roomBookInfo B where ( A.begintime>B.begintime and A.begintime<B.endtime )
------解决方案--------------------
恭喜狼头
------解决方案--------------------
虽然我很菜,但是还是想试试:
表结构:
-- -- 表的结构 `roomBookInfo` -- -- 创建时间: 2010 年 10 月 15 日 00:01 -- 最后更新时间: 2010 年 10 月 15 日 00:08 -- DROP TABLE IF EXISTS `roomBookInfo`; CREATE TABLE IF NOT EXISTS `roombookinfo` ( `id` int(4) unsigned NOT NULL auto_increment, `title` varchar(10) NOT NULL, `beginTime` datetime NOT NULL, `endTime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=4 ; -- -- 导出表中的数据 `roomBookInfo` -- INSERT INTO `roomBookInfo` VALUES (1, '会议一', '2010-10-15 00:07:58', '2010-10-15 00:09:06'); INSERT INTO `roomBookInfo` VALUES (2, '会议二', '2010-10-15 00:08:27', '2010-10-15 00:08:33'); INSERT INTO `roomBookInfo` VALUES (3, '会议三', '2010-10-16 00:08:41', '2010-10-17 00:08:44');
------解决方案--------------------
找出与 (@btime ,@etime) 有交集的记录,
not (begintime >= @etime or EndTime <= @btime)
也即是 begintime<@etime and Endtime>@btime
------解决方案--------------------
select *
from roomBookInfo
where beginTime<@eTime
and endTime>@bTime;
------解决方案--------------------
很原始的检查方法
select * from roombookinfo where (begintime BETWEEN @btime and @etime) or (endtime BETWEEN @btime and @etime) or (@btime between begintime and endtime) or (@etime BETWEEN begintime and endtime);
------解决方案--------------------
借狼头大哥的帖子问一个问题(类似的):
由于某种原因,在insert的时候,没有进行时间冲突判断,过后需要判断某段时间是否有冲突,如何判断?
比如存在两条记录,一条是9:00--11:00,一条是10:00--12:00
这样的话,如果我查9:00--12:00这个时间段内是否有冲突,就应该显示有冲突。
谢谢。
------解决方案--------------------
09-11
10-12
就是判断ENDTIME>BEGINTIME,11>10,存在冲突
------解决方案--------------------
------解决方案--------------------
接个分。。还差300多点就一颗星星了。指日可待。
------解决方案--------------------
接分,可以用自连接可以找出有冲突.
------解决方案--------------------
接分...........
------解决方案--------------------