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

Mysql 给定开始日期&;当前日期,如何知道当前日期是否是重复模式的一部分,mysql,Mysql,所以我有一行显示它是何时创建的!(即2013年12月1日),我有与之相关的频率重复模式 频率从1到6,重复模式为每天、每周、每月和每年 因此,用户可以设置重复性,如{Frequency:1,Recurrence:Monthly}或{Frequency:2,Recurrence:Monthly} 我需要一个查询,将采取当前和创建的日期,并看看当前日期是否属于频率 因此,如果创建日期为2013年12月1日,今天为2014年2月1日,{frequency:2,Recurrence:Monthly}将有

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

频率从1到6,重复模式为每天、每周、每月和每年

因此,用户可以设置重复性,如{Frequency:1,Recurrence:Monthly}或{Frequency:2,Recurrence:Monthly}

我需要一个查询,将采取当前和创建的日期,并看看当前日期是否属于频率

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

假设:

  • 重复周期有关联的天数,并以每天=1、每周=7、每月=31、每年=365的形式存储在数据库中
  • 返回您想要的有效或无效
  • 您的日期是标准的mysql日期格式
然后,以下步骤将起作用:

  • 要获取两个日期之间的天数差,请使用函数
  • 要获得int的绝对值,请使用函数
  • 要获得除数和除数的余数,请使用函数
  • 下面是一些示例代码:

    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.com查看您的数据吗?然后发布你想要的输出?这听起来是一个非常有趣的问题。每月是基于30天还是每月的同一天?那么2月和31天的月份呢?为了便于编码,我假设每30天一次,但是你的示例将被取消,因为它只在2014年1月30日有效,“频率”代表什么?例如,
    {frequency:2,Recurrence:Monthly}
    是否意味着事件每月重复两次?如果是的话,在什么日期会再次发生?每月应包括31天。频率可用于设置场景,如每隔一个月、每两周。等等。频率2和每月复发将意味着每隔几个月一次。@jmogera这是因为该月必须定义为30天或31天,因此它将适用于
    '2014-03-04'
    ,其中一个月定义为31天。如果你想每个月的同一天,那么你有更多的工作要做。抱歉。选择如果(MOD((ABS(DATEDIFF('2014-01-01','2014-02-01'))/天(LAST_DAY('2014-01-01')),1)=0,'valid','invalid')作为结果;您的意思是在间隔(列或变量名)年中使用变量或列名?是的,我在StackOverflow上也学到了这一点。这就是我喜欢StackOverflow的地方,在帮助社区的同时,你永远不会停止学习