写一条sql列出开始日期和结束日期之间的每一天(包括起止日期)
给定一个开始日期和结束日期,写个sql把中间的每天都查出来(包括开始和结束日期)。
给定开始时间是2023-03-12,结束时间是2023-03-22,sql如下:
SELECT DATE_ADD('2023-03-12', INTERVAL seq DAY) AS `day` FROM ( SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 ) t WHERE DATE_ADD('2023-03-12', INTERVAL seq DAY) <= '2023-03-22'
查询结果
day 2023-03-12 2023-03-13 2023-03-14 2023-03-15 2023-03-16 2023-03-17 2023-03-18 2023-03-19 2023-03-20 2023-03-21 2023-03-22
如果要动态处理,可以使用mybatis的foreach标签处理该sql
参数dateStart、dateEnd、numList分别代表开始时间、结束时间、差值数集合
SELECT DATE_ADD(DATE_FORMAT(#{dateStart},'%Y-%m-%d'), INTERVAL seq DAY) AS `day` FROM ( SELECT 0 seq UNION ALL <foreach collection="numList" item="numItem" separator=" UNION ALL " open=" " close=" "> SELECT #{numItem} </foreach> ) WHERE DATE_ADD(DATE_FORMAT(#{dateStart},'%Y-%m-%d'), INTERVAL seq DAY) <= DATE_FORMAT(#{dateEnd},'%Y-%m-%d')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2017-03-23 Netty(六):Netty中的连接管理(心跳机制和定时断线重连)
2017-03-23 java正则表达式验证汉字