【发布时间】:2012-05-04 10:04:29
【问题描述】:
这适用于 (MS SQL Server 2008) 它允许用户安排其他用户的开始和结束日期/时间,而不会重叠。
我正在解决在日程安排期间不能重叠个人的业务规则。例如,如果用户 1 计划从 2012 年 1 月 1 日到 2012 年 1 月 4 日,则用户 2 应该无法提交 2012 年 1 月 2 日到 2012 年 1 月 4 日的请求。这部分已经处理好了,下面是我的SQL。
SELECT * FROM fooTable
WHERE
Prim = 1
AND
Group = 10
AND
(('2012-06-01 08:01' between startdate and enddate
OR '2012-06-03 08:01' between startdate and enddate)
OR
('2012-06-01 08:01' < startdate) AND ('2012-06-03 8:01' > enddate))
我现在需要允许时间表重叠,因为新班次可以在最后一个班次结束时开始。例如,我的结束日期是 2012 年 1 月 1 日晚上 8:00 - 我应该可以安排某人在 2012 年 1 月 1 日和晚上 8:00 开始。
需要一些帮助来思考这个问题。
【问题讨论】:
-
这通常是特定于数据库的,并且应该使用您正在使用的特定 RDBMS 进行标记 - Oracle、MySQL 等。您没有明确地转换日期,而您确实应该这样做。
-
如果您存储开始和结束的完整日期/时间并进行比较,难道不应该使用相同的逻辑吗?
1/1/2012 20:00的开始时间不应与1/1/2012 20:00的结束时间重叠
标签: sql sql-server-2008 date time between