mysql取上个月最后一天

mysql取上个月最后一天,第1张

获取上个月最后一天

SELECT

date_sub( date_sub( date_format( now(), '%y-%m-%d' ), INTERVAL extract( DAY FROM now()) DAY ), INTERVAL 0 MONTH ) AS date

业务背景 :有一张公众号粉丝关注数总表,按照每天汇总关注总数,解读如下:截止到 2022-01-01 公众号关注总数为: 45087

设计思路:

执行结果:

该实现方式,由于当前所在月还未到最后一天,存在无法获取当前月数据情况。经过考虑,使用 max 取每一个月中最大的一天,最终优化sql如下:

1、这里使用inner join 而非where 子查询,涉及到效率执行问题。

select * from tsrate_tj where date_format(ts_date,'%Y-%m-%d') in (LAST_DAY(STR_TO_DATE('2012-01','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-02','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-03','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-04','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-05','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-06','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-07','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-08','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-09','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-10','%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-11,'%Y-%m-%d')),LAST_DAY(STR_TO_DATE('2012-12','%Y-%m-%d')) )

当然了 in 里面的条件可以用程序循环拼出来,年和月 看你具体的业务需求;需要别的条件就 继续 and;至于你要查什么,把*换掉你想要的就OK了;分页的话 直接在后面加 LIMIT。

希望能帮到你,望采纳!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6103320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存