php mysql添加1年到目前为止比较,如果新的日期将在30天内到来

时间:2013-03-28 08:21:35

标签: mysql date

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

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

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

示例:该课程于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

但显然它不能胜任这项工作...... 有人能指出我正确的方向吗?

谢谢! 干杯, 格雷格

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

Euhm,这个:

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