我有一份报告表,其日期是定期的,这意味着每6个月应该有一份报告。我的应用程序中有一个日历,用于显示尚未完成的报告的日期,作为规划未来的一种方式。目前,我已设法显示六个月间隔尚未完成的报告。例如,如果我在2017年1月1日收到报告,则日历将正确显示在2017年7月1日传递包含此日期的30天间隔时需要新报告。这是我用于此的查询:
SELECT a.komitent_id,
DATE_FORMAT(MAX(str_to_date(a.report_date, '%d.%m.%Y')), "%d.%m.%Y"),
DATE_FORMAT(MAX(DATE_ADD(str_to_date(a.report_date, '%d.%m.%Y'), INTERVAL 6 MONTH)), "%d.%m.%Y") 'datum_isteka'
FROM izvjestaji_aparata a
WHERE str_to_date(a.report_date, '%d.%m.%Y') < str_to_date(:start, '%d.%m.%Y')
AND DATE_ADD(str_to_date(a.report_date, '%d.%m.%Y'), INTERVAL 6 MONTH)
BETWEEN str_to_date(:start, '%d.%m.%Y') AND str_to_date(:end, '%d.%m.%Y')
GROUP BY a.komitent_id;
开始和结束参数从PHP传递并且每月间隔(来自FullCalendar)
但现在我想显示01.01.2018到31.01.2018范围内的报告。例如,如果我的报告的日期介于1年,1.5年,2年,2.5年等之前或之前的数字(6,12等),我应该在此日历中显示。
我一直在考虑尝试使用TIMESTAMPDIFF和MOD,6 = 0,但我不能将它用于动态参数(范围)。
有什么方法可以通过查询实现这一点,或者我必须使用PHP逻辑来实现这一目标?
编辑:
要改写,问题是将日期与传递范围内的所有日期进行比较:start to:end。我需要这个范围内的每个日期,与月份中a.report_date的差异可以被6整除。