在制作简单的活动日历时,我遇到了这个问题 我需要的是安排每月发生一次的事件,但是在同一个工作日和同一个小时。我使用SQLite,我的想法是在一个给定的Datetime(YYYY-mm-dd HH:00:00)中注册一个月重复标记,并且在检索结果时,它需要返回相同的工作日但是一次每个月一整年。所以,为此,我只需要有一条记录。
到目前为止,我有正常,每日或每周事件的查询:
SELECT
id,
strftime("%H", time) AS hour,
strftime("%d", time) AS day,
strftime("%w", time) AS weekday,
strftime("%m", time) AS month,
strftime("%Y", time) AS year,
name,
event,
repeat
FROM event
WHERE (year LIKE :year)
AND
(
(day LIKE :day AND
month LIKE :month AND
repeat = 0)
OR
(repeat = 1)
OR
(weekday LIKE :weekday AND repeat = 2)
);
如果有任何帮助,我将不胜感激。
修改
通过检查月份数字差异来解决:
SELECT
id,
strftime("%H", time) AS hour,
strftime("%d", time) AS day,
strftime("%w", time) AS weekday,
strftime("%m", time) AS month,
strftime("%Y", time) AS year,
name,
event,
repeat
FROM event
WHERE (year LIKE :year)
AND
(
(day LIKE :day AND
month LIKE :month AND
repeat = 0)
OR
(repeat = 1)
OR
(weekday LIKE :weekday AND
repeat = 2)
OR
(:day_int <= CAST(day AS INTEGER)+3 AND
:day_int >= CAST(day AS INTEGER)-3 AND
weekday LIKE :weekday AND
repeat = 3)
);