MySQL-mysql 生成两个日期之间的所有日期列表的sql

发布于 2016-11-17 01:04:28 字数 307 浏览 1277 评论 1

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾兮 2017-01-12 16:39:27

想了好久总于写出不依赖其他表,以及不写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;

另附测试截图:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文