我正在处理一个应用程序,其中有一个带有company_name、start_date、end_date的表。我有很多公司,分别是一月至三月、四月至六月、七月至九月、十月至十二月,我现附上我的sql资料截图,供你参考。

现在,假设三月是一些end_date,你可以看到表数据ABC,XYZ和PQR有三月份的end_date。所以我想在仪表盘上展示提醒。
如果
March是end_date,那么它应该在end_date的1个月前开始在仪表板上显示,在以前的month.Means的第8天开始显示,它将在February的第8部分开始显示。直到May的第七。 如果June是end_date,那么它应该在end_date的1个月前开始在仪表板上显示,在以前的month.Means的第8天开始显示,它将在May的第8部分开始显示。直到August的第七。 正如我所说,它将从前一个月的第8个月开始,直到接下来的2个月和第3个月的第7个月。如何为这类场景编写查询。
发布于 2018-07-16 21:38:56
我不确定在提醒结束前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() <= enddateSQL Fiddle你可以用它试试
https://stackoverflow.com/questions/51340454
复制相似问题