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 相关文章推荐
数据库连接池
Apr 06 MySQL
详解MySQL 用户权限管理
Apr 20 MySQL
mysql中between的边界,范围说明
Jun 08 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
WINDOWS下安装mysql 8.x 的方法图文教程
Apr 19 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL中JOIN连接的基本用法实例
Jun 05 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 MySQL
MySQL数据库查询之多表查询总结
Aug 05 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
第四节--构造函数和析构函数
2006/11/16 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
python数组过滤实现方法
2015/07/27 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
一篇.NET面试题
2014/09/29 面试题
初中女生自我鉴定
2013/12/19 职场文书
优秀老师事迹材料
2014/02/05 职场文书
道德之星事迹材料
2014/05/03 职场文书
物理学专业求职信
2014/07/04 职场文书
居住证明范文
2015/06/17 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis