我正在开发一个可以安排活动和提醒的ajax网络日历。
架构
id INT
title VARCHAR
startdate TIMESTAMP
endtime TIME
enddate DATE
kind INT
reminder INT DEFAULT 0
解释
“kind”字段可以是0,1,2,3,4,5,如“一次”,“每日”,“工作日”,“每周”,“每月”,“每年”
“提醒”字段以分钟为单位,表示提醒应开始提醒的startdate
前几分钟
我需要选择“正在进行”的事件和提醒(混合两者都没有问题......我会在php中分割出类似“真实事件”/“提醒”)
选择
在这个SELECT中,我只考虑“一次”(0)和“每日”(1)种日程......(更容易让你理解)
SELECT *
FROM calendar
WHERE
enddate >= NOW()
AND
(
(
NOW() >= startdate
AND kind=0
AND CURDATE() = DATE(startdate)
AND CURTIME() <= endtime
)
OR
(
NOW() >= startdate
AND kind=1
AND CURTIME() >= TIME(startdate)
AND CURTIME() <= endtime
)
OR
(
NOW() >= DATE_SUB(startdate, INTERVAL reminder MINUTE)
AND NOW() < startdate
)
)
问题
我选择事件和提醒“一次”类型没有问题,因为提醒行为**reminder**
分钟前**startdate**
分钟 DATE_SUB(startdate,INTERVAL提醒MINUTE) < / p>
正如您所看到的,SELECT在第一个计划之后错过了kind = 1的提醒,因为重复意味着“startdate end enddate之间的每一天”,并且提醒本身应该重复出现。
我知道我需要获得下一个日程/时间并减去**reminder**
,但到目前为止我找不到合适的解决方案......(请记住,我的“完整”SELECT应该有工作日/每周/每月/每年的时间表,比我需要正确的sql部分合并到其他类型的时间表...但对于这个具体的问题,我限制每日提醒,只是为了不难理解我在说什么! :D)
如何解决这个问题?请帮帮我:(
答案 0 :(得分:0)
start "" /wait "%~d0\SETUP_POSTOP\01 Configure Power Settings\always on.bat"