我正在尝试使用 MySQL 查询做某事,并请求您对此提供帮助。
实际上,我想向白天在我的网站上收到通知的用户发送一封每日电子邮件(带有 cron 任务)。我已经有以下查询:
SELECT u.username, u.email, COUNT(*) AS nb_notification
FROM notification n, user u
WHERE n.to_user_id = u.id
AND u.status = 1
AND n.date >= now() - INTERVAL 1 DAY
AND n.status = 0
GROUP BY u.username
现在,我想改进此查询,以便所有电子邮件都不会在同一小时内发送。为此,我有以下想法:只获取在执行 cron 任务的同一小时内注册的用户。
用户的注册日期作为 DATETIME 字段存储在名为“register_date”的用户表中。
例如,如果我有两个用户:
- 用户 Alex 于 2015 年 9 月 10 日上午 10:10 注册
- 用户 Sophia 在同一天上午 08:52 注册
我的 cron 任务在上午 11:20 执行......所以没有发送电子邮件,因为没有用户在上午 11:00 到 12:00 之间注册
我的 cron 任务在上午 10:00 执行...如果 Alex 在过去 24 小时内收到一些通知,则会发送一封电子邮件!
我的 cron 任务在 08 执行
如何更新我的查询以仅获取在我的 cron 任务执行的同一时间注册的用户?