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 06 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
mysql全面解析json/数组
Jul 07 MySQL
MySQL事务的隔离级别详情
Jul 15 MySQL
mysql sock文件存储了什么信息
Jul 15 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jQuery中读取json文件示例代码
2013/05/10 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
python读写文件操作示例程序
2013/12/02 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
四年大学生活的自我评价范文
2014/02/07 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
离婚协议书范文2015
2015/01/26 职场文书
运动会200米广播稿
2015/08/19 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫