mysql 查询两个日期之间所有天数(查询近两个月所有日期)

本文转自博文:https://blog.csdn.net/qq_42795259/article/details/126722209

遇到一个需求需要查询近两个月所有日期,如下图:

 

首先实现解决问题如何获取两个日期所有日期,可以通过以下sql实现功能:

SELECT
date_sub('2022-07-06',interval ( @i := @i - 1 ) day) as days
from mysql.help_topic
join (select @i:=1) c
where help_topic_id <= (TIMESTAMPDIFF(day,'2022-07-06','2022-09-06'))

在解决核心问题后,现在获取两个月前当前日期:

 

所以这个地方用到了,类

select DATE_ADD(NOW(), interval 1 MONTH) //NOW()此处必须为时间格式
————————————————————————
date_add() 增加
date_sub()减少
————————————————————
month 月份
minute 分钟
second 秒

得到以下函数今天日期和两个月后当前日期,再把她们结合在最开始两个时间段中可以得到最终sql,获取近两个月所有日期。

select curdate(); //获取今天
select date_sub(curdate(), interval 2 MONTH); //获取两个月后当前日期

SELECT
date_sub(date_sub(curdate(), interval 2 MONTH),interval ( @i := @i - 1 ) day)  as days
from mysql.help_topic 
join (select @i:=1) c
where help_topic_id <= (TIMESTAMPDIFF(day,date_sub(curdate(), interval 2 MONTH),curdate()))

同理可以实现其他功能,例如查询本年所有月份:

    SELECT DATE_FORMAT(DATE_ADD(CONCAT(YEAR(DATE(NOW())),'-01-01'),INTERVAL (CAST( help_topic_id AS SIGNED )) MONTH ),'%Y-%m') months
    FROM mysql.help_topic
    WHERE help_topic_id < 12 ORDER BY months ASC

————————————————
版权声明:本文为CSDN博主「沐游虞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42795259/article/details/126722209

posted @ 2023-01-31 16:39  冬日暖羊  阅读(963)  评论(0编辑  收藏  举报