日期:2014-05-16  浏览次数:20507 次

怎么查询会议室的可用时间段
请看8楼10楼的说明
http://topic.csdn.net/u/20110518/22/25bdae13-b21d-4dbb-97ea-e57ac9fad97c.html
1 楼 adria20092 2011-05-23  
数据库里有已经过期的记录需要排除掉,当会议记录的结束时间小于当前系统时间的需要排除,然后如果当前有开始时间小于当前系统时间,而结束时间大于等于当前系统时间的需要在结束时间的基础上加到整位的5或10开始算分钟。如下面的我现在的系统时间是2011-5-20 13:39:00
假设下面的是系统当前的会议室已定记录
  开始时间 结束时间 会议室名称
1.2011-05-17 09:00:00--2011-05-20 10:00:00 10
2.2011-05-20 13:00:00--2011-05-20 18:00:00 10
3.2011-05-25 09:30:00--2011-05-25 10:00:00 10
4.2011-05-25 11:00:00--2011-05-25 12:00:00 10
5.2011-05-25 09:30:00--2011-05-25 10:00:00 14


假设会议室记录有上面的4条记录,我现在需要过滤上面的记录,
1,首先排除掉第一条记录,因为它的结束时间小于当前的系统时间
2.看第二条记录,它的开始时间小于当前的系统时间,而结束时间又大于当前的系统时间,当么我们当前计算显示的第一条记录就是当前系统时间(2011-5-20 13:39:00),因为当前的系统时间不是整位的5或10,所以这里我们要加到10,也就是判断其分钟的个位是小于5还是大于5的问题,记录结果为
2011-5-20 13:40:00--2011-05-20 17:55:00
3.第三条记录无论是开始时间还是结束时间都大于当前的系统时间,当前第二记录的开始时间是第一条记录的结束时间加5,规则同2描述一样,所以记录结果为
2011-05-20 18:05:00--2011-05-25 09:25:00
4.第四条记录同3结果为
2011-05-25 10:05:00--2011-05-25 10:55:00
5.最后一条记录,因为其开始时间大小当前系统时间,而我们的结果时间是固定的(2099-01-01 23:55:00)所以最后一条记录的结果也出来了:
2011-05-25 12:00:00--2099-01-01 23:55:00

所以最终的结果就是下面的记录,根据会议室名称查询数据:
  开始时间 结束时间 会议室名称
1.2011-5-20 13:40:00--2011-05-20 17:55:00 10
2.2011-05-20 18:05:00--2011-05-25 09:25:00 10
3.2011-05-25 10:05:00--2011-05-25 10:55:00 10
4.2011-05-25 12:00:00--2099-01-01 23:55:00 10

我这样讲应该明白我的意思了吧?
2 楼 adria20092 2011-05-23  
帮忙用sql server2000实现一下
3 楼 ray_linn 2011-05-23  
一般都是用exchange server来book会议室。。。
4 楼 adria20092 2011-05-23  
要怎么弄,我只要一条sql查询出来,这个不能实现吗?