给出开始日期&当前日期,我如何知道当前日期是否是重复模式的一部分

时间:2014-01-01 19:22:14

标签: mysql

所以我有一行显示它何时被创建! (即12/1/2013),我有重复的模式,其频率与之相关。

频率为1到6,重复模式为每日,每周,每月和每年。

因此,用户可以像{频率:1,重复发生:每月}或{频率:2,重复发生:每月}重复设置

我需要一个查询,该查询将获取当前日期和创建日期,并查看当前日期是否低于该频率。

因此,如果创建日期:2013年12月1日,今天:2014年2月1日,{frequency:2,Recurrence:Monthly}将有效。

2 个答案:

答案 0 :(得分:2)

试试这个sqlFiddle它使用一个函数来检查给定日期是否在计划中的每一行重复出现

答案 1 :(得分:1)

假设:

  • 重复周期与天数相关,并以每日= 1,周= 7,月= 31,每年= 365
  • 的形式存储在数据库中
  • 您想要返回有效或无效
  • 您的日期是标准的mysql日期格式

然后以下内容将起作用:

  1. 要获得两个日期之间的天数差异,请使用DATEDIFF()函数
  2. 要获取int的绝对值,请使用ABS()函数
  3. 要获得被除数和除数的余数,请使用MOD()函数
  4. 以下是一些示例代码:

    SELECT
      IF(MOD((ABS(DATEDIFF(createdDate,'2014-02-01'))/days),frequency)=0,'valid','invalid') AS result
    FROM
      schedule
      INNER JOIN recurringtypes ON schedule.recurringtypeId=recurringtypes.id
    

    已编辑:SQLFiddle