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 Show Profile
Apr 05 MySQL
Mysql数据库索引面试题(程序员基础技能)
May 31 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
MySQL笔记 —SQL运算符
Jan 18 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 MySQL
MySQL中dd::columns表结构转table过程及应用详解
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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
DOM 事件流详解
2015/01/20 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
python 获取et和excel的版本号
2009/04/09 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
python编程的核心知识点总结
2021/02/08 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
药学专业个人自我评价
2013/11/11 职场文书
军训心得体会
2013/12/31 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
大一新生期末自我评价
2014/09/12 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers