【数据库】Mysql日期/时间函数实际案例

有一款金融产品,总共24期,每月2日到期还款日,第一个到期还款日为放款日下个月的2日,现在我们知道所有订单的放款时间,现在我们想统计每个订单当前时间是第几期。

举个简单例子:当期日期为2019-11-12,假设某个订单的放款日期为2019-09-13,那么这个订单当前就处于第2期。现在通过上篇文章的mysql时间日期函数统计相关数据。

分析:总共10笔订单,有三个类型的账单日prov_stg_day2、12、13。首先用账单日对比当期日期,当前日期大于等于账单日,当前期数cur_term加1;actual是预期值(用于判断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进行整理,待续!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动

之前我们的用例数据都是配置在 Jmeter Http 请求中&#xff0c;每次需要增加&#xff0c;修改用例都需要打开 jmeter 重新编辑&#xff0c;当用例越来越多的时候&#xff0c;用例维护起来就越来越麻烦&#xff0c;有没有好的方法来解决这种情况呢&#xff1f; 其实我们可以将用…

module 'queue' has no attribute 'Queue'解决

import queue q queue.Queue() q.put(a) q.put(b) print(q.get())错误&#xff1a; AttributeError: module queue has no attribute Queue 解决方法&#xff1a; 把程序名命名和包名一样导致错误。命名为queue1.py就ok了

【Python】import自己的模块报错

在实际使用python时&#xff0c;我们会将一些公共的东西写到一些基础模块中&#xff0c;供其他模块去调用&#xff0c;这时会去import自定义的一些基础模块&#xff0c;然后来导入。 自己写好了脚本&#xff0c;然后导入&#xff0c;导入的情况分为以下情况&#xff1a; 1. 运行…

Jmeter生成自动化和性能多维度测试报告(性能指标和监听器图表)

jmeter在命令行下还可以生成多维度的测试报告&#xff0c;里面包含了常用的性能指标和监听器图表。 一、环境要求 1、jmeter3.0版本之后开始支持动态生成测试报表 2、jdk版本1.7以上 3、需要jmx脚本文件 二、生成jtl文件 1、进入bin目录下cd jmeter -n -t C:\jmeter\apach…

【Python】pyinstaller模块打包的exe在windows环境无法使用问题汇总

问题一&#xff1a;解决pyinstaller打包发布后的exe文件打开控制台闪退的问题 pyinstaller打包发布后的exe文件在自己电脑能够正常使用&#xff0c;但是给到别人的电脑时&#xff0c;打开exe文件却发生闪退&#xff0c;看不到具体的原因。 1、定位问题&#xff1a; 1.1.切换到…

Appium+PythonUI自动化测试之uiautomatorviewer和Inspector元素定位

一、uiautomatorviewer uiautomatorviewer是android-sdk自带的一个元素定位工具&#xff0c;非常简单好用&#xff0c;使用uiautomatorviewer&#xff0c;你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。 1、启动uiautomatorviewer.bat&#xff0c;打开sdk安装…

服务器购买和远程连接

1. 申请阿里云服务器 *打开阿里云ECS购买页面&#xff0c;并用淘宝账号登陆&#xff0c;可以按需购买。基础配置的话包月大约60元/月 在部署阶段也可以选择按使用流量付费&#xff0c;只需要32元/月&#xff0c;后续部署成功后进行配置升级 操作系统选择Ubuntu的最新版本 …

【Linux】与用户管理相关的命令总结

这篇文章主要总结一下linux中用户相关的命令&#xff1a; 一、查询用户信息相关&#xff1a; 二、用户创建、删除相关&#xff1a; 三、用户密码相关 四、用户组相关 一、查询用户信息相关&#xff1a; 1. cat /etc/passwd 可以查看所有用户的列表 具体内容介绍 :分隔成7个…

Xshell连接阿里云服务器ECS

1. 参考资料&#xff1a; 1). 《阿里云服务器怎么用&#xff1f;阿里云服务器使用教程》 链接&#xff1a;http://www.cr173.com/html/50758_1.html 2). eagle-zhang的CSDN博客《Xshell连接不上阿里云服务 链接&#xff1a;http://blog.csdn.net/zhangxing52077/…

【数据库】Windows安装redis全流程

Redis&#xff1a;REmote DIctionary Server(远程字典服务)&#xff0c;是由意大利人Salvatore Sanfilippo&#xff08;网名&#xff1a;antirez&#xff09;开发的一款内存高速缓存数据库。 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;高性…

Jmeter跨线程组传递参数

jmeter的线程组之间是相互独立的&#xff0c;各个线程组互不影响&#xff0c;所以线程组A中输出的参数&#xff0c;是无法直接在线程组B和线程组C中被调用的。 但是有时为了方便管理&#xff0c;我们可能是把各个接口单独存放在不同的线程组中。拿token来说&#xff0c;虽然每…

【工具】Notepad++的一些常用配置

Notepad是d Winows操作系统下的一套文本编辑器(软件版权许可证: GPL)&#xff0c;有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。 本文主要介绍了Notepad的一些常用配置。 一、设置默认打开txt、java文件 菜单&#xff1a;设置—>首选项—>文件关联 设置后&a…

【工具】Xshell安装注册以及简单属性配置

Xshell是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。 Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不同系统下…

使用Xftp5连接云服务器

软件详细介绍见&#xff1a;https://baike.baidu.com/item/Xftp/249096?fraladdin 软件下载链接见&#xff1a;http://www.netsarang.com/products/xfp_overview.html 安装完成打开软件出现如下界面&#xff0c;成功&#xff1a; 二、连接使用Xftp 1、打开Xftpl软件&#xff…

用SQL语句查看数据库数据量的大小

1、进入MQSQL命令行界面 2、输入密码 3、输入命令 1、进入information_schema 数据库&#xff08;存放了其他的数据库的信息&#xff09; use information_schema; 2、查询所有数据的大小&#xff1a; select concat(round(sum(data_length/1024/1024),2),MB) as data from …

【Linux】free命令查询服务器内存信息

Linux的free命令对于很多的Linux运维来说&#xff0c;应该是非常熟悉的了。但作为一个经常使用linux系统的小白来说&#xff0c;我们也需要了解一下free命令。 free 命令显示系统内存的使用情况&#xff0c;包括物理内存、交换内存(swap)和内核缓冲区内存。 free命令的返回结果…

【Linux】linux服务器下的帮助命令总结

在Linux环境中&#xff0c;如果遇到困难&#xff0c;可以使用帮助命令来取得帮助。 常见的帮助命令有&#xff1a;man 命令、help 命令、info 命令。 在介绍这几个命令前&#xff0c;需要先介绍一下内建命令与外部命令&#xff0c;因为有一些查看帮助的工具在内建命令与外建命令…

服务器Ubuntu Import Error:cannot import name main

利用Xftp5进入到usr/bin 目录下&#xff0c;找到pip3. 把它拷贝到桌面上&#xff0c;用pycharm打开&#xff0c;进行如下修改&#xff1a; 把下面的三行 from pip import main if __name__ __main__:sys.exit(main())替换为&#xff1a; from pip import __main__ if __name…

【Linux】linux服务器下包管理器

通常Linux应用软件的安装包有三种&#xff1a; 1&#xff09; tar包&#xff0c;如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。 2&#xff09; rpm包&#xff0c;如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。 3&#xff09; dpk…

阿里云服务器部署django项目

ubuntu自带了2.7。想要装3.5并设置为默认python版本。 安装python3.5 sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 python --version sudo apt-get install python3-pip #装pip3设置python3为默认版本 直接执行这两个…