MySQL-mysql 生成两个日期之间的所有日期列表的sql
在mysql数据库里,用mysql标准库函数如何根据给定的两个日期生成它们之间所有以天位单位的日期列表,比如给定两个日期2012-09-01,2012-09-10然后生成如下一列值:
datecols
2012-09-01
2012-09-02
2012-09-03
2012-09-04
2012-09-05
2012-09-06
2012-09-07
2012-09-08
2012-09-09
2012-09-10
只能用mysql标准函数不能自定义函数,这个sql如何写?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
想了好久总于写出不依赖其他表,以及不写proc或function 的解决方法了,具体如下:
-- 定义自增变量
set @i = -1;
-- 创建指定日期间记录数天数需要 加 1
set @sql = repeat(" select 1 union all",-datediff('2012-09-01','2012-09-10')+1);
-- 将最后一个union all 去掉,这里前边加1个空格,就不用在减1了
set @sql = left(@sql,length(@sql)-length(" union all"));
-- 拼接sql
set @sql = concat("select date_add('2012-09-01',interval @i:=@i+1 day) as date from (",@sql,") as tmp");
prepare stmt from @sql;
execute stmt;
另附测试截图: