【发布时间】:2019-02-09 15:09:36
【问题描述】:
我在 WinForms 应用程序 (vb.net) 中使用调度程序(日历)并将约会(startDateTime 和 endDateTime)保存到 MySql DB。
在预约过程中,我需要检查某个资源(例如:房间)在特定日期的特定时间段(分钟)内是否可用。
我在这里寻找适合我的方案的可能解决方案,但是,所有解决方案都与在特定时间段内搜索条目有关。
我将约会的 StartTime 和 EndTime 以及该约会所需的任何资源存储到数据库。
我可以拥有多个资源(例如:多个房间),并且如果默认(或选定的房间)资源在该时间段内不可用,我希望能够找到具有未分配时间段的房间。
时间段可以从 10 分钟到 2 小时不等,但它始终是针对约会类型和资源设置的时间段,例如: 任命:董事会会议
资源:董事会会议室
开始时间: 02/02/2019 09:00:00
结束时间: 02/02/2019 10:00:00
任何帮助将不胜感激。
我正在修改的代码
SELECT (TIME(b.appStartTime) - TIME(a.appEndTime)) as timedifference,
a.appID, a.appOwnerKey, a.appEndTime, b.appStartTime, a.appSubject,
a.appDescription, a.appToolTip, a.appCategory, a.appImg, a.appPatWaiting
FROM cusAppointments a
INNER JOIN cusAppointments b ON b.appID = (a.appID + 1)
WHERE (DATE(a.appStartTime) = DATE(NOW()) AND
DATE(b.appEndTime) = DATE(NOW()))
AND (TIME(b.appStartTime) - TIME(a.appEndTime)) >= 15000
AND a.appOwnerKey = 'Admin .'
ORDER BY a.appStartTime ASC;
编辑: 这不起作用,因为在我看来,我应该使用在 StartTime 上排序的同一个表的两个记录集,然后从 RecordSet B 的 rowid + 1 的 StartTime 中减去 RecordSet A 的 rowid 的 EndTime。
【问题讨论】:
-
@Mary:问题不在于实际计算,因为我已经对那部分进行了排序,问题是我需要计算 2 个不连续记录之间的时间差。这意味着我不能处理recID,因为预约是随机的。请参考我的编辑。