1

我一直在编写一个小脚本,该脚本应该在该日期前 30 天检查到期日期并发送电子邮件提醒。

我有一个表,其中的列名称'completed'表示课程完成和完成的日期。每门课程有效期为1年。

我一直在尝试做的是首先在 ' ' 中添加一整年,completed然后检查该新日期是否恰好在 30 天之前now().

示例:课程于 2012 年 12 月 31 日结束。有效期至 2013 年 12 月 31 日,因此如果TODAY是 2013 年 12 月 1 日,则应发送电子邮件提醒。

我有这个小脚本:

 SELECT distinct
     userID
     , completed+INTERVAL 1 YEAR AS expires
   FROM activity
  WHERE completed > NOW() + INTERVAL 30 DAY

但显然它不起作用......有人能指出我正确的方向吗?

谢谢!干杯,格雷格

4

2 回答 2

1

为了提高效率,你真正需要做的是+INTERVAL 1 YEAR深入到 WHERE。您可以使用简单的代数来做到这一点。

completed + (1 YEAR) > NOW + (30 DAYS)

等同于

completed  > NOW + (30 DAYS) - (1 YEAR)

给予

SELECT distinct
    userID,
    ADDDATE(completed,INTERVAL 1 YEAR) AS expires
FROM activity
-- Used CURRENT_DATE so that time of day is not a factor
WHERE completed > SUBDATE(ADDDATE(CURRENT_DATE,INTERVAL 30 DAY), INTERVAL 1 YEAR)
于 2013-03-28T08:25:59.700 回答
0

嗯,这个:

SELECT distinct
     userID
     , completed+INTERVAL 1 YEAR AS expires
   FROM activity
  WHERE completed+INTERVAL 1 YEAR > NOW() + INTERVAL 30 DAY
于 2013-03-28T08:24:02.713 回答