前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL基础】Mysql获得当前日期的前一个月的最后一天

【MySQL基础】Mysql获得当前日期的前一个月的最后一天

作者头像
青山师
发布2023-05-04 20:00:13
8740
发布2023-05-04 20:00:13
举报

Mysql获得当前日期的前一个月的最后一天

 场景:一家P2P公司的财务专员请求开发人员(或DBA)统计历史借款用户数量,她查看的时间是今天,想要的数据是这个月以前(不含这个月)的用户数。  难题:“这个月”是动态的,可能是2016年7月、2017年3月等等。我们就需要写一个动态SQL给她以后就让她自己执行就OK了。  思路:如果我们可以找到一个条件时间,然后用户借款时间小于这个条件时间的所有数据就是她想要的结果了。关键就是确定这个条件时间了。  DB表ACCOUNT,账户ID:ACCT_ID借款时间PAY_DATE。 我们想要的应该是这样的SQL:

代码语言:javascript
复制
SELECT COUNT(ACCT_ID) FROM ACCOUNT WHERE DATE_FORMAT(PAY_DATE, '%Y%m%d') <= 条件时间

 如果这个条件时间是当前时间上一个月最后一天该有多好,直接替换就行了。  是的,那我们就根据当前时间找到条件时间(当前时间上一个月最后一天)吧:

 在Mysql获得当前日期的所在月的第一天一节中我们已经拿到了当前日期的所在月的第一天,这个日期减去24个小时该多好,下面就这样做吧: date_sub(arg1, arg2): 参数arg1是时间,arg2是和date_add函数类似的参数形式interval 小时数N 运算单位hour(空格符分隔), 表示当前时间减去N个小时(单位hour是可以选择的— day、year等

代码语言:javascript
复制
select date_add(curdate(),interval -day(curdate())+1 day)
result: 2017-07-01

select date_sub('2016-07-01', interval 24 hour)
result: 2016-06-30 00:00:00

select date_sub(date_add(curdate(),interval -day(curdate())+1 day), interval 24 hour)
result: 2016-06-30 00:00:00 ##我们想要的【条件时间】

 但是我们想要的形式是20160630,所以需要格式化日期。使用date_format函数:   date_format(arg1, ‘%Y%m%d’): 将arg1转成20160714形式   date_format(arg1, ‘%Y-%m-%d’): 将arg1转成2016-07-14形式   date_format(arg1, ‘%Y%m%d%H%i%s’): 将arg1转成20160714140821形式   date_format(arg1, ‘%Y%-m-%d %H:%i:%s’): 将arg1转成2016-07-14 14:08:21形式

代码语言:javascript
复制
select date_format(date_sub(date_add(curdate(),interval -day(curdate())+1 day), interval 24 hour), '%Y%m%d') ##【条件时间】
result: 20160630

 最终SQL:

代码语言:javascript
复制
SELECT COUNT(ACCT_ID) FROM ACCOUNT WHERE DATE_FORMAT(PAY_DATE, '%Y%m%d') <=
	date_format(date_sub(date_add(curdate(),interval -day(curdate())+1 day), interval 24 hour), '%Y%m%d')
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mysql获得当前日期的前一个月的最后一天
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档