首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

散分,并怎么判断时间段上有重叠冲突

2012-03-17 
散分,并如何判断时间段上有重叠冲突。首先,感谢大家的支持。终于得到了一颗钻石。已经比 大版 十豆三 老师预

散分,并如何判断时间段上有重叠冲突。
首先,感谢大家的支持。
终于得到了一颗钻石。已经比 大版 十豆三 老师预计了晚了近一个星期的时间才收获到。

CSDN比去年来说,MYSQL版出现了许多新的声音,新的面孔,特别是很多来自MS SQL SERVER, ORACLE的数据库方面的专家朋友的积极参与。使用我们在共同的讨论,争论,辩论中不断提高。 在这儿再一次感谢大家的参考和支持。

原本应该在拿到钻的当时就应该按CSDN的惯例放分的,可是一直想不出放个什么小问题。所以拖了好几天,今天刚巧看到这个经常出现的问题。所以提出来以供大家分享参考。

===============================================================================

比如某个会议室的预订信息表 roomBookInfo(id,title,beginTime,endTime), 现在有一个新的预订请求 @bTime, @eTIme 分别 代表 开始、结束时间。

请检查下表中的记录,查看是否有时间上的冲突。


create table roomBookInfo (id int auto_increment primary key, title varchar(10), beginTime datetime not null , endTime datetime not null);

===============================================================================

最后预祝 zuoxingyu 升星


[解决办法]
果断SF
[解决办法]

SQL code
select * from roomBookInfo Awhere exists(select 1 from roomBookInfo B     where ( A.begintime>B.begintime and A.begintime<B.endtime )
[解决办法]
恭喜狼头
[解决办法]
虽然我很菜,但是还是想试试:

表结构:
SQL code
-- -- 表的结构 `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;
[解决办法]
很原始的检查方法

SQL code
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多点就一颗星星了。指日可待。
[解决办法]
接分,可以用自连接可以找出有冲突.
[解决办法]
接分...........
------解决方案--------------------


如何才能获取积分呢?
[解决办法]
看看热闹.................
[解决办法]
没看懂,不过在学!
[解决办法]
围观一下钻石用户
[解决办法]
我不会,我很单纯的接分路过。仰慕钻钻
[解决办法]
钻石吖..厉害~~~~.
.排序的话..
判断 开始时间和结束时间是否在 其他预定时间区间之外 ..
[解决办法]
比如某个会议室的预订信息表 roomBookInfo(id,title,beginTime,endTime), 现在有一个新的预订请求 @bTime, @eTIme 分别 代表 开始、结束时间。

请检查下表中的记录,查看是否有时间上的冲突。

create table roomBookInfo (id int auto_increment primary key, title varchar(10), beginTime datetime not null , endTime datetime not null);


[解决办法]
SQL有问题,只能精确到分钟,不能到秒!

SQL code
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test]') AND type in (N'U'))DROP TABLE [dbo].testGOCREATE TABLE  test (  id int NOT NULL,  title varchar(50) NULL,  begintime datetime NOT NULL,  endtime datetime NOT NULL,)INSERT INTO test VALUES (1, '会议一', '2010-10-15 09:00:01', '2010-10-15 09:30:00');INSERT INTO test VALUES (2, '会议二', '2010-10-15 10:08:27', '2010-10-15 10:08:33');INSERT INTO test VALUES (3, '会议三', '2010-10-16 15:08:41', '2010-10-17 16:08:44');godeclare @btime smalldatetime,@etime smalldatetimeselect @btime='2010-10-15 08:01:00'select @etime='2010-10-15 09:00:30'select * from test where ((@bTime>=beginTime and @bTime<endTime) or (@bTime<endTime and @eTIme>endTime) or (@bTime<=beginTime and @eTIme>beginTime))go
[解决办法]
围观查看。。。。。
[解决办法]
啥意思呢?
[解决办法]
哈哈,各显神通.努力.....
[解决办法]
恭喜啊 求个师傅
[解决办法]
谢谢,拿分走人
[解决办法]
砖石是怎么得的啊?
[解决办法]
谢谢,拿分走人
[解决办法]
也很疑惑,坐等答案
[解决办法]
jf~~~~~~~~~~~~~~~~~
[解决办法]
非常热心的LZ

从以往贴子看到不少知识,感谢的顶贴

[解决办法]
确定交集就可以了
[解决办法]
接分,
[解决办法]
用sql语句能实现真是想不出来

类似问题我都是写程序循环判断了。
[解决办法]
探讨
SQL code

CREATE TABLE test (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`begintime` datetime NOT NULL,
`endtime` datetime NOT NULL,
PRIMARY KEY (`id`)
) ;

insert into test(begi……

------解决方案--------------------


直接挺~!
[解决办法]
用not exists吧 ,排除掉正常的,剩下的就是有冲突的了
 

select * from roomBookInfo where not exists( select * from roomBookInfo where beginTime >= endTime)
[解决办法]
每天坚持顶帖
[解决办法]
我就是过来顶的!
[解决办法]

[解决办法]
祝贺,以楼主经常出现在周月日排行榜上的势头,成钻石是必然的。
[解决办法]
我也不会判断理论
[解决办法]
这是逻辑题

申请时间start-----end

查找冲突。

查找所有: 开始时间<end and 结速时间>start 所有记录

当记录存在时则有冲突
[解决办法]
我也不会判断理论
[解决办法]
来的还不算太晚,恭喜恭喜
[解决办法]
不错,就是不明白
[解决办法]

[解决办法]
感谢大家的支持。
[解决办法]
好多分·~来接
[解决办法]
新人。。看不懂。。。啊
[解决办法]
果断JF~!~~
[解决办法]
有用,
收藏
[解决办法]
楼主真是有心人,谢谢分享!
[解决办法]

[解决办法]
散分帖一定要顶,接分
[解决办法]
各位都是大神,膜拜一下
[解决办法]
学习了,呵呵
[解决办法]
先顶了再仔细看。
[解决办法]

热点排行