php - 如何编写sql查询以显示带有结束日期列的特定时间段的任务提醒?
问题描述
我正在开发一个应用程序,其中我有一张带有company_name
, start_date
,的表end_date
。我有很多公司,他们各自的季度是1-3月,4-6月,7-9月,10-12月。我附上我的sql数据截图以供您帮助。
现在,假设某些公司的 3 月是 end_date。如果您看到表数据 ABC、XYZ 和 PQR 的 end_date 是 3 月。所以我想在仪表板上显示该提醒。
如果
March
是,end_date
那么它应该在上个月的end_date
8 日的 1 个月之前开始显示在仪表板上。意味着它将在 8 日开始显示February
。至 7 日May
。如果
June
是,end_date
那么它应该在上个月的end_date
8 日的 1 个月之前开始显示在仪表板上。意味着它将在 8 日开始显示May
。至 7 日August
。正如我所说,它将从上个月的第 8 天开始到接下来的 2 个月和第 3 个月的第 7 天。如何为这种情况编写查询。
解决方案
我不确定在“30 天前”结束时显示提醒是否正常,或者出于法律或业务要求,提醒是否需要在一个月前开始,但我相信这些查询中的任何一个都是检索的良好开始结束日期之前的提醒(假设在结束日期之后不显示)。
第一个确定 enddate 是否在接下来的 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
推荐阅读
- python - 下载 PyQt5 和 Pytube 时 GUI 冻结
- powerbi - Power BI M Query - 从 Web 获取数据时出现错误
- amazon-s3 - 为 s3 ninja(aws s3 模拟器)设置 AWS CLI
- python - learning_curve 没有交叉验证
- random - 如何根据jmeter中的随机选择来选择值?
- python - Python Second for 循环只循环一次
- apache-flink - 公开在同一主机上运行的多个任务管理器指标
- tcl - 如何搜索反斜杠的数量
- python - 当值完全在字符串格式中时,如何将 json 转换为 pandas 数据帧
- java - 如何在Java中获取当前登录用户的窗口