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慢查询的坑
Apr 28 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
MySQL大小写敏感的注意事项
May 24 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 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
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php查看网页源代码的方法
2015/03/13 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
Array对象方法参考
2006/10/03 Javascript
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
python实现上传下载文件功能
2020/11/19 Python
详解python 注释、变量、类型
2018/08/10 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python匿名函数用法实例分析
2019/08/03 Python
Django之腾讯云短信的实现
2020/06/12 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
施工资料员岗位职责
2014/01/06 职场文书
高三体育教学反思
2014/01/29 职场文书
见习期自我鉴定
2014/01/31 职场文书
三方协议书范本
2014/04/22 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技