我不确定在提醒结束前30天显示是否可以,或者在法律或业务要求下,提醒需要在一个月前开始,但我相信这些查询中的任何一个都是在结束日期之前检索提醒的良好开始(并且假设不是在结束日期之后)。
第一个选项确定结束日期是否在接下来的30天内:
-- Items with end date in next 30 days from now
select *, DateDiff(enddate,now()) AS DaysUntilEnd
from data
where
DateDiff(enddate,now()) >=0 AND DateDiff(enddate,now()) < 30;
第二个计算提醒的开始和结束日期:
-- Items with notification start exactly 1 month before
select *,
DATE_SUB(enddate, INTERVAL 1 MONTH) AS NotificationStart,
enddate AS NotificationEnd
from data
where
now() > DATE_SUB(enddate, INTERVAL 1 MONTH) AND
now() <= enddate
SQL Fiddle
你可以试试看