需要一些建议。试图建立一个集成到我们其他系统中的预订系统,除了可靠地检测其他预订的冲突外,它们都已完成
我的预订数据库结构非常简单如下
fk_ResourceID, StartDate, EndDate, z_TimeStart, z_TimeEnd
我有一个查询来获取数据并检索在日期范围内预订的资源。这非常有效。我现在需要添加另一个过滤器来检查时间。
SELECT
fk_ResourceID,
z_TimeStart,
z_TimeEnd,
StartDate,
EndDate
FROM Resources
WHERE fk_ResourceID = 'Drama Room'
AND
(
(StartDate <= ? AND EndDate >= ?) OR
(StartDate <= ? AND EndDate >= ?) OR
(StartDate >= ? AND EndDate <= ?)
)
ORDER BY fk_ResourceID ASC
我无法弄清楚如何包含时间检查,所以我所做的是循环查询中的每条记录并检查此标准
If(
(z_TimeStart >= new_booking_start_time and z_TimeStart <= new_booking_end_time)
or
(new_booking_start_time >= z_TimeStart and new_booking_start_time <= z_TimeEnd);
True )
我认为它有效,但遗憾的是我遇到了失败的情况。我的数据如下。
Returned Data From SQL Query: 'Drama Room','08:55','23:55','07/22/2016','07/28/2016'
Data Input in my form to check: 'Drama Room','08:05','08:35','07/24/2016','07/24/2016'
在我开始在循环中破解条件语句以检查日期和时间之前,是否有一种相当简单的方法在原始sql查询中实现时间搜索?我使用FileMaker sql和scripts命令的组合来尝试解决这个问题。的?是FM SQL中的查询参数。
答案 0 :(得分:0)
这是获得冲突的正确逻辑
std::optional<>