mysql 7天一跟踪实现

业务规制

每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.confirmOrderTime,
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 dp
LEFT JOIN bdf2_user bu ON bu.USERNAME_ = dp.supervisorId
LEFT JOIN dowell_customer dc ON dc.id = dp.customerId
WHERE 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 NULL
ORDER BY CASE WHEN days>=7 AND followDays!=dp.followFlag THEN 0 ELSE 1 END DESC
,followDays ASC



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值