Mysql查询时间区间日期列表,不会由于数据表数据影响


Posted in MySQL onApril 19, 2022

1、查询时间区间日期列表,不会由于数据表数据影响

select a.date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.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
    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 d
) a
where a.date between '2020-01-20' and '2021-12-24' ORDER BY a.date asc

 tips:如果要查询当前日期后面的数据 curdate()改为截止日期就好

2、创建视图可以公共使用

CREATE VIEW v_digits AS
  SELECT 0 AS digit 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;
 
CREATE VIEW v_numbers AS
  SELECT
    ones.digit + tens.digit * 10 + hundreds.digit * 100 + thousands.digit * 1000 AS number
  FROM
    v_digits as ones,
    v_digits as tens,
    v_digits as hundreds,
    v_digits as thousands;
		
-- 生成的日期格式为  yyyy-MM-dd		
CREATE VIEW v_dates AS
  SELECT
    SUBDATE(CURRENT_DATE(), number) AS date
  FROM
    v_numbers
  UNION ALL
  SELECT
    ADDDATE(CURRENT_DATE(), number + 1) AS date
  FROM
    v_numbers;
 
-- 生成的日期格式为 yyyy-MM
CREATE VIEW v_months AS
  SELECT
    DATE_FORMAT(SUBDATE(CURRENT_DATE(), INTERVAL number MONTH),'%Y-%m')  AS date
  FROM
    v_numbers
  UNION ALL
  SELECT
    DATE_FORMAT(ADDDATE(CURRENT_DATE(), INTERVAL number+1 MONTH),"%Y-%m") AS date
  FROM
    v_numbers;

Mysql查询时间区间日期列表,不会由于数据表数据影响

3、创建为视图之后,可以通过视图查询时间区间列表日期

SELECT
  date
FROM
  v_dates
WHERE
  date BETWEEN '2020-01-20' AND '2021-01-24'
ORDER BY
  date asc

Mysql查询时间区间日期列表,不会由于数据表数据影响

4、查询时间区间按月

select DATE_FORMAT(str_to_date (a.Date,'%Y-%m-%d'),"%Y-%m") as Date 
from (
    select '2011-12-24' - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) MONTH 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
    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 d
) a
where a.Date between '2010-01-20' and '2011-12-24' ORDER BY a.Date asc;

Mysql查询时间区间日期列表,不会由于数据表数据影响

附:在对mysql的时间进行区间查询的时候出现的问题

<if test="searchcondition.starttime!=null">
    <![CDATA[ and select_data.data_time  >= #{searchcondition.starttime,jdbcType=TIMESTAMP} ]]>
</if>

<if test="searchcondition.stoptime!=null">
    <![CDATA[ and select_data.data_time <= #{searchcondition.stoptime,jdbcType=TIMESTAMP} ]]>
</if>

在test中不能使用searchcondition.stoptime!=’ ‘这个判断会报错,上面的是标准的时间查询,自己做的时候总是会加上!=’ ‘这个条件.所以总是报错,记录一下.

总结

到此这篇关于Mysql查询时间区间日期列表的文章就介绍到这了!

MySQL 相关文章推荐
MySQL 分页查询的优化技巧
May 12 MySQL
Mysql数据库命令大全
May 26 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
WINDOWS下安装mysql 8.x 的方法图文教程
CentOS MySql8 远程连接实战
Mysql排查分析慢sql之explain实战案例
Apr 19 #MySQL
MySQL视图概念以及相关应用
mysql 乱码 字符集latin1转UTF8
Apr 19 #MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 #MySQL
为什么MySQL8新特性会修改自增主键属性
You might like
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
javascript 写类方式之一
2009/07/05 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
es6函数之rest参数用法实例分析
2020/04/18 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
python处理cookie详解
2014/02/07 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python插入排序算法实例分析
2015/07/03 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python交互式图形编程实例(二)
2017/11/17 Python
解决python "No module named pip" 的问题
2018/10/13 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python 函数返回值的示例代码
2019/03/11 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
社区党总支书记先进事迹材料
2014/01/24 职场文书
《日月潭》教学反思
2014/02/28 职场文书
演讲主持词
2014/03/18 职场文书
预备党员公开承诺书
2014/05/28 职场文书
社区维稳工作方案
2014/06/06 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
感谢信
2019/04/11 职场文书