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.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

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

主题: MySQLSQL数据算法EDI数据库
分页:12
转载请注明
本文标题:mysql7天一跟踪实现 mysql mysql数据库 mysql函数 MySQL跟踪实现
本站链接:http://www.codesec.net/view/521489.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(23)