本文转自博文: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