如何在SQLite中为给定年份选择相隔工作日一个月(每月一次)的日期

时间:2016-10-11 15:57:16

标签: php sqlite datetime

在制作简单的活动日历时,我遇到了这个问题 我需要的是安排每月发生一次的事件,但是在同一个工作日和同一个小时。我使用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)
            );

0 个答案:

没有答案