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多表连接查询的执行细节
Apr 24 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
MySql新手入门的基本操作汇总
May 13 MySQL
MySQL 不等于的三种使用及区别
Jun 03 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
从0开始学Vue
2016/10/27 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
layui文件上传实现代码
2017/05/20 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
简单使用Python自动生成文章
2014/12/25 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
django rest framework使用django-filter用法
2020/07/15 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
如何用SQL语句进行模糊查找
2015/09/25 面试题
父亲追悼会答谢词
2014/01/17 职场文书
产品质量承诺范本
2014/03/31 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
安全检查汇报材料
2014/12/26 职场文书
音乐之声观后感
2015/06/04 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
微信小程序调用python模型
2022/04/21 Python
Python PIL按比例裁剪图片
2022/05/11 Python