MySQL天前基于其他表中的设置

标签 mysql date offset

当前查询检查今天是否是客户的生日以及 processTime 是否是这个小时。这就像一个魅力。不过,我们希望调整查询,并在客户生日前 x 天向客户发送电子邮件。这取决于birthday_settings 中的dayOffset 设置。

dayOffset 的范围是 -365 到 +365。

我应该对以下查询进行哪些调整。生日列是日期列

SELECT firstName, lastName, birthday, FROM 
    birthday_customers C
    INNER JOIN
    birthday_settings S
        ON C.customerId = S.customerId
WHERE 
    MONTH(birthday) = MONTH(NOW()) 
    AND DAY(birthday) = DAY(NOW())
    AND processTime = HOUR(NOW())

最佳答案

您只需从当前时间减去天数即可:

SELECT firstName, lastName, birthday
FROM birthday_customers C INNER JOIN
     birthday_settings S
     ON C.customerId = S.customerId
WHERE MONTH(birthday) = MONTH(DATE_SUB(CURDATE(), interval s.DayOffset day) AND
      DAY(birthday) = DAY(DATE_SUB(CURDATE(), interval s.DAYOffset day) AND
      processTime = HOUR(NOW())

关于MySQL天前基于其他表中的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671149/

相关文章:

mysql - mysql IF条件中的多个表达式

java - Java日历日期,2014-02-16跳过一小时

mysql - 如何更改 AFTER INSERT 触发器中的列值?

c# - NHibernate/Transaction 如何只提交一个对象而不提交整个 session

linux - 如何在Linux中的字符串中添加小时?

javascript - ScrollTop 具有多个 anchor 的偏移粘性栏

twitter-bootstrap - Bootstrap 偏移量滚动 spy 不起作用

vba - 在 vba 中向下 move 行范围

mysql - 获取最后一个插入 ID 显示错误的数字

javascript - 使用 JavaScript 遍历日期范围