mysql - MySQL 中的每月日期

标签 mysql

我现在遇到了一些麻烦。我试图实现的系统是一个“回调”系统,它将针对客户设置回调,这些回调将在指定日期在系统上弹出。

其中一个功能是重复发生的回调。两种选择是按月和按年。我每年的工作正常:

SELECT * FROM `callbacks` WHERE (
-- Yearly Callbacks
(DAYOFYEAR(`date_callback`) = DAYOFYEAR(NOW()) AND `occurs` = 'yearly') OR

-- Other Callbacks For Today
(DATE(`date_callback`) = DATE(NOW())))

但是我无法想象如何检查每月的回调是否到期。它应该只在列表中每 30 天出现一次(使用上面的查询)。我使用的是 DAYOFMONTH 但我意识到,如果为 31st 设置了回调,它就会尽管是每月回调,但一次不会出现在列表中几个月。

因此,如果设置为 2013 年 3 月 3 日 并设置为每月,则该日期应该出现在查询结果中:

  • 2013 年 3 月 3 日
  • 2013 年 4 月 1 日
  • 2013 年 5 月 1 日
  • 2013 年 5 月 31 日
  • 2013 年 6 月 30 日

等等。以前有人处理过这个问题吗?

最佳答案

我会考虑使用间隔,例如

。 。 。 (DATE_ADD(NOW(), 间隔 1 个月)) 。 。 .

另请参阅this发布。

或者 - 你可以尝试(伪代码)

now() - pre_saved_date % 30 (module of 30)

对于 % - 使用 MOD 函数,例如

select MOD(2, 3);
select 3 % 2;

关于mysql - MySQL 中的每月日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760709/

相关文章:

php - 如何从包含unix时间戳中日期字段的表中获取记录?

php - 如何持续监控 mysql 数据库中的表并触发 php 脚本对其进行处理?

php - 未捕获错误:调用 mamp 中未定义的方法 mysqli_stmt::get_result()

php - 使用两个变量在 Mysqli 中准备语句

mysql - MySQL 有问题

MySQL DISTINCT 和重音符号

Mysql 内连接与 concat_ws

php - 因级联下降而大汗淋漓和尖叫

mysql - 在 RDBMS 中标记已删除条目的更好方法

php - 在 html 文本区域中输入引号和双引号,而数据库中的插入操作失败。是否可以?