【发布时间】:2011-10-19 22:06:23
【问题描述】:
我正在设计一个日历应用程序,它重复无、每日、每周、每月和每年。 我的要求之一是“两个事件不应重叠” 我存储数据的表的名称
活动
字段
dtstart - 事件开始时间
dtend - 事件结束时间
考虑以下两种情况,
事件 1 8 月 15 日下午 3:00 - 下午 4:00 重复 - 无
事件 2 8 月 15 日下午 2:00 - 下午 5-00 重复 - 无
在上述情况下,以下 SQL 查询的工作方式与魅力相似
String sqlQuery = "SELECT * FROM 事件 WHERE dtstart AND dtend 在 %d 和 %d 之间";
sqlQuery = String.format(sqlQuery, dtstart, dtend);
现在,考虑情况二。
事件 1 8 月 15 日下午 3:00 - 下午 4:00 重复 - 每天到 8 月 20 日
Event2 8 月 18 日下午 2:00 - 下午 5-00 重复 - 无
如果我的两个 sqlQuery 失败,因为它会检查同一日期(8 月 18 日)的事件开始和结束时间。就我而言,我的查询应该显示 8 月 15 日的时间冲突。
请帮助我处理 SQL 查询,以便检查重复发生的事件。
在事件表中,我存储开始时间、结束时间、上次日期 发生和发生类型。
数据库方案如下
表名称:事件
标题 | dtstart | 倾向于 | 重复输入 | 最后一次发生
【问题讨论】:
-
dtstart和dtend是Events中的唯一字段吗?或者您是否还存储了重复和最后一次出现的日期?所有重复发生的事件都有结束日期吗?还是可以永远持续下去? -
您的重复数据列的名称和类型是什么?
-
@Bohemian 重复数据列是重复类型,取值 -1 = 不重复,0 = 每天重复,1 = 每周重复,2 = 每月重复,5 = 每年重复。
标签: sql time calendar schedule recurrence