如果用一个表来存储预约信息的话,它将包含这4个字段:ID,日期(date),开始时间(startTime),结束时间(endTime)
这样检索的时候就简单了
select count(1) from table T1 where date=@date and id not in( select id from table where date=@date and (endTime < @startTime or startTime > @endTime) )
如果count(1)>0则有冲突
谢谢!
数据库的时间存的就是 年月日 时分秒 吧 没必要再弄个日期 还有冲突的情况不止这一种
strWhere += "(FStartTime<='" + startDate + "' and FendTime>='" + startDate + "')";
strWhere += " or ";
strWhere += "(FStartTime<='" + endDate + "' and FendTime>='" + endDate + "')";
strWhere += " or ";
strWhere += "(FStartTime>'" + startDate + "' and FStartTime<='" + endDate + "')";
strWhere += " or ";
strWhere += "(FStartTime<='" + startDate + "' and FendTime>='" + startDate + "' and FendTime<'" + endDate + "')";
有2个字段一个是这个设备 预约开始时间 和 结束时间 比较一下
第一个人预约时间的结束时间和第二个人预约时间的开始时间比较
大于就是有冲突
小于就是没冲突
有好几种情况, 把两个时间段当做两条线段 在纸上画,就很清晰了,有交叉的情况就是有冲突;
求出以上情况是否已有预订就行了
怎么个画法,能教我一下吗?
@net小民工: 一个线段A表示你已经选择的时间段 , 在它的左边画一个线段B, 从左到右移动。 有交叉就表示有冲突的时间段。 注意线段B的长短可能比A大
@mushishi: 能和我说一下这是那方面的技术吗,我好上网查。我现在还是一个菜鸟中的菜鸟!
@net小民工: 这个只是想法啦 又不是什么技术 学过数学的应该很好理解