网站建设知识
mysql7天一跟踪实现
2025-07-22 10:02  点击:0

mysql7天一跟踪实现

业务规制

每7天一跟踪,如设置时间区间1月1日~1月18日中 1月8日、1月15日时出现“今天”跟踪。如果今天是1月9日,但1-8没有跟踪则显示1-8日。如果跟踪显示1-15。如果上一个回合你没有跟踪显示上一回合的时间。数学差就纠结。想了好久终于有一个算法。名词与公式

跟踪回合数:

这个表示记录我的跟踪的第几个7天。比如1-8我跟踪了标记跟回天数为1 (1月8日-1月1日)=7天 7/7=1 又如 (1月15日-1月1日)=14天 14/7=2

距今总天数:

是指设置的那天也就1月1日离今天多少天 。比如今天为 1月5日 这个值=(1月5日-1月1日)=4天

应该跟踪日期=((跟踪回合数+1)*7-距今总天数)

#查出7天一跟踪的项目 并排序SELECT dp.id,dp.modifyAppointmentDate,dp.nextVisitTime,dp.prevVisitTime,dp./confirm/iOrderTime,date_add(sysdate(),interval ((ifnull(dp.followFlag,0)+1)*7-DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)) day),((ifnull(dp.followFlag,0)+1)*7-DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)) as i,dp.supervisorId, bu.CNAME_ as supervisorName,dp.customerTel,dp.customerName,dp.houseVillage,dp.city, DATEDIFF(SYSDATE(),dp.modifyAppointmentDate) days,DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)%7 AS followDays,dp.followFlag,dc.customercar_USERNAME_FROM dowell_project dpLEFT JOIN bdf2_user bu ON bu.USERNAME_ = dp.supervisorIdLEFT JOIN dowell_customer dc ON dc.id = dp.customerIdWHERE dp.`status` <> 4 AND dp.supervisorId IS NOT NULL AND DATEDIFF(dp.nextVisitTime,dp.modifyAppointmentDate)>=7 AND DATEDIFF(dp.nextVisitTime, SYSDATE())>=0 AND modifyAppointmentDate IS NOT NULLORDER BY CASE WHEN days>=7 AND followDays!=dp.followFlag THEN 0 ELSE 1 END DESC,followDays ASC