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 05 MySQL
left join、inner join、right join的区别
Apr 05 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
详解MySQL集群搭建
May 26 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
深入解析MySQL索引数据结构
Oct 16 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 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
聊天室php&amp;mysql(三)
2006/10/09 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
virtualenv介绍及简明教程
2020/06/23 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
一份Java笔试题
2012/02/21 面试题
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
烟台的海导游词
2015/02/02 职场文书
全陪导游词
2015/02/04 职场文书
《我是什么》教学反思
2016/02/16 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
Python多个MP4合成视频的实现方法
2021/07/16 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技