网站域名解析ip查询,无锡seo,页面设计怎么弄,上海seo公司排名榜有一款金融产品#xff0c;总共24期#xff0c;每月2日到期还款日#xff0c;第一个到期还款日为放款日下个月的2日#xff0c;现在我们知道所有订单的放款时间#xff0c;现在我们想统计每个订单当前时间是第几期。
举个简单例子#xff1a;当期日期为2019-11-12#…有一款金融产品总共24期每月2日到期还款日第一个到期还款日为放款日下个月的2日现在我们知道所有订单的放款时间现在我们想统计每个订单当前时间是第几期。
举个简单例子当期日期为2019-11-12假设某个订单的放款日期为2019-09-13那么这个订单当前就处于第2期。现在通过上篇文章的mysql时间日期函数统计相关数据。 分析总共10笔订单有三个类型的账单日prov_stg_day2、12、13。首先用账单日对比当期日期当前日期大于等于账单日当前期数cur_term加1actual是预期值用于判断sql语句查出来的是否正确
一、 已过到期还款日
select id,acp_dt,now(),prov_stg_day,actual,TIMESTAMPDIFF(MONTH,acp_dt,now()) as cur_term
from hb_loanfile_detail where day(now())prov_stg_day;
查询结果有些cur_term计算错误是由于TIMESTAMPDIFF函数计算不足月是舍弃的但实际我们只要隔月了就算一个月 所以我们可以对acp_dt进行处理DATE_FORMAT(acp_dt,%Y-%m-01)
select id,acp_dt,prov_stg_day,actual,TIMESTAMPDIFF(MONTH,DATE_FORMAT(acp_dt,%Y-%m-01),now())
as cur_term from hb_loanfile_detail where day(now())prov_stg_day; 二、 未过到期还款日
select id,acp_dt,prov_stg_day,actual,TIMESTAMPDIFF(MONTH,DATE_FORMAT(acp_dt,%Y-%m-01),now())
as cur_term from hb_loanfile_detail where day(now())prov_stg_day; 用相同的方法发现查询的cur_term是错的所以我们要转换一下思路 应该对now()进行处理DATE_SUB(now(),interval 1 month)
select id,acp_dt,prov_stg_day,actual,TIMESTAMPDIFF(MONTH,DATE_FORMAT(acp_dt,%Y-%m-01),DATE_SUB(now(),interval 1 month))
as cur_term from hb_loanfile_detail where day(now())prov_stg_day; 所以最终两个sql语句如下
-- 已过到期还款日
select id,acp_dt,now(),prov_stg_day,actual,TIMESTAMPDIFF(MONTH,DATE_FORMAT(acp_dt,%Y-%m-01),now())
as cur_term from hb_loanfile_detail where day(now())prov_stg_day;
-- 未过或正好到期还款日
select id,acp_dt,now(),prov_stg_day,actual,TIMESTAMPDIFF(MONTH,DATE_FORMAT(acp_dt,%Y-%m-01),DATE_SUB(now(),interval 1 month))
as cur_term from hb_loanfile_detail where day(now())prov_stg_day;
后面将介绍 case when then 语句对上面两个sql进行整理待续