gpt4 book ai didi

php - MySQL 日期重复

转载 作者:可可西里 更新时间:2023-11-01 07:56:35 25 4
gpt4 key购买 nike

在我的一个 Web 应用程序(在 PHP 和 MySQL 中)中有一个用户事件提醒。用户可以添加下一个提醒日期并设置重复间隔(即仅一次、3 个月、6 个月和每年)。将其保存在表格中

id      |    emp_id      |    alert_date         |   repeat_interval
--------+----------------+-----------------------+----------------------
1 | 124 | 2014-05-02 00:00:00 | 3
--------+----------------+-----------------------+----------------------
2 | 123 | 2014-05-02 00:00:00 | 12
--------+----------------+-----------------------+----------------------
3 | 122 | 2014-02-02 00:00:00 | 6
--------+----------------+-----------------------+----------------------
4 | 121 | 2014-07-02 00:00:00 | 0
--------+----------------+-----------------------+----------------------
5 | 124 | 2014-05-02 00:00:00 | 6
--------+----------------+-----------------------+----------------------
6 | 125 | 2014-08-02 00:00:00 | 6
--------+----------------+-----------------------+----------------------
7 | 126 | 2014-06-02 00:00:00 | 12
--------+----------------+-----------------------+----------------------
8 | 127 | 2014-05-02 00:00:00 | 3
------------------------------------------------------------------------

repeat_interval 的值为

0 - One time event
3 - Every 3 months
6 - Every 6 months
12 - Yearly

现在我有一个每天早上运行的“cronjob”,用于搜索事件并向用户发送警报。我有以下 MySQL 查询

SELECT * 
FROM alerts as al
WHERE date(al.alert_date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);

这将返回 tmrw 的警报,我可以用它发送邮件。但我的问题是如何也采取这些间隔?

即如果提醒日期是 01-05-2013 并且设置重复 3 个月然后需要发送邮件01-05-2013 间隔3个月

实际上这是达到此目的的正确方法吗?或者我需要更改表格?

谁能给我个主意?提前致谢

最佳答案

你可以用下一个应该提醒的日期更新 alert_date。因此,每次执行 cronjob 时,更新所有具有 repeat_interval != 0 的警报,其中 alert_date + repeat_interval 月数。我猜你可以使用 DATE_ADD() 函数来计算 att 个月:

UPDATE alerts SET alert_date = DATE_ADD(alert_date, INTERVAL repeat_interval MONTHS) WHERE repeat_interval != 0

如果您需要存储原始日期,只需创建一个额外的列 next_alert,然后更新该日期即可。

关于php - MySQL 日期重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com