mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)


Posted in MySQL onJune 18, 2021

mysql获取一个时间段中所有日期或者月份

1:mysql获取时间段所有月份

select DATE_FORMAT(date_add('2020-01-20 00:00:00', interval row MONTH),'%Y-%m') date from
 ( 
    SELECT @row := @row + 1 as row FROM 
    (select 0 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) t,
    (select 0 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) t2, 
    (SELECT @row:=-1) r
 ) se
 where DATE_FORMAT(date_add('2020-01-20 00:00:00', interval row MONTH),'%Y-%m') <= DATE_FORMAT('2020-04-02 00:00:00','%Y-%m')

2:mysql获取时间段所有日期

select date_add('2020-01-20 00:00:00', interval row DAY) date from
 ( 
    SELECT @row := @row + 1 as row FROM 
    (select 0 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) t,
    (select 0 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) t2, 
    (SELECT @row:=-1) r
 ) se
 where date_add('2020-01-20 00:00:00', interval row DAY) <= '2020-03-02 00:00:00'

备注:

这段代码表示数据条数限制,写两次查询的日期最多显示100条,写三次查询日期最多显示1000次,以此类推,根据你自己的需求决定

下面是设置最多显示条数10000写法

mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)

希望能帮助到你,萌新在线求带!!!

下面是其他网友的补充大家可以参考一下

1、不使用存储过程,不使用临时表,不使用循环在Mysql中获取一个时间段的全部日期

select a.Date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    from (select 0 as a 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) as a
    cross join (select 0 as a 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) as b
    cross join (select 0 as a 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) as c
) a
where a.Date between '2017-11-10' and '2017-11-15'

输出如下

Date
----------
2017-11-15
2017-11-14
2017-11-13
2017-11-12
2017-11-11
2017-11-10

2、mysql获取两个日期内的所有日期列表

select @num:=@num+1,date_format(adddate('2015-09-01', INTERVAL @num DAY),'%Y-%m-%d') as date
from btc_user,(select @num:=0) t where adddate('2015-09-01', INTERVAL @num DAY) <= date_format(curdate(),'%Y-%m-%d')
order by date;

此方法优点就是不需要创建存储过程或者是日历表,缺点就是你必须要有一个表,它的数据条数大到足够支撑你要查询的天数

3、mysql获取给定时间段内的所有日期列表(存储过程)

DELIMITER $$
DROP PROCEDURE IF EXISTS create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE, e_date DATE)
BEGIN
-- 生成一个日历表
SET @createSql = ‘CREATE TABLE IF NOT EXISTS calendar_custom (
`date` date NOT NULL,
UNIQUE KEY `unique_date` (`date`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8‘;
prepare stmt from @createSql;
execute stmt;
WHILE s_date <= e_date DO
INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;
SET s_date = s_date + INTERVAL 1 DAY ;
END WHILE ;
END$$
DELIMITER ;
-- 生成数据到calendar_custom表2009-01-01~2029-01-01之间的所有日期数据
CALL create_calendar (‘2009-01-01‘, ‘2029-01-01‘);
DELIMITER $$
DROP PROCEDURE IF EXISTS create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE, e_date DATE)
BEGIN
-- 生成一个日历表
SET @createSql = ‘truncate TABLE calendar_custom‘;
prepare stmt from @createSql;
execute stmt;
WHILE s_date <= e_date DO
INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;
SET s_date = s_date + INTERVAL 1 DAY ;
END WHILE ;
END$$
DELIMITER ;
-- 生成数据到calendar_custom表2009-01-01~2029-01-01之间的所有日期数据
CALL create_calendar (‘2009-01-02‘, ‘2009-01-07‘);

到此这篇关于mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)的文章就介绍到这了,更多相关mysql获取指定时间段中的日期与月份内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL索引篇之千万级数据实战测试
Apr 05 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
MySQL EXPLAIN输出列的详细解释
May 12 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Nov 27 MySQL
MySQL Server层四个日志的实现
Mar 31 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
Aug 05 MySQL
Mysql如何查看是否使用到索引
Dec 24 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 #MySQL
MySQL GRANT用户授权的实现
Jun 18 #MySQL
浅谈MySQL user权限表
Jun 18 #MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 #MySQL
MySQL 亿级数据导入导出及迁移笔记
如何使用分区处理MySQL的亿级数据优化
Jun 18 #MySQL
详解MySQL中的pid与socket
Jun 15 #MySQL
You might like
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
jquery ajax post提交数据乱码
2013/11/05 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
使用Python写一个小游戏
2018/04/02 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Django中create和save方法的不同
2019/08/13 Python
python中图像通道分离与合并实例
2020/01/17 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
韩国现代百货官网:Hmall
2018/03/21 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
客服服务心得体会
2013/12/30 职场文书
毕业实习评语
2014/02/10 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
新郎接新娘保证书
2015/05/08 职场文书
导游词之任弼时故居
2020/01/07 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python