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的连接查询
Jun 03 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
MYSQL如何查看进程和kill进程
Mar 13 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 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生成缩略图的类代码
2008/10/02 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
使用python实现strcmp函数功能示例
2014/03/25 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python中单、双下划线的区别总结
2017/12/01 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python 实现批量图片识别并翻译
2020/11/02 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
Shell编程面试题
2012/05/30 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
法学个人求职信范文
2014/01/27 职场文书
导购员的岗位职责
2014/02/08 职场文书
教师党员个人整改措施
2014/10/27 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL