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 07 MySQL
MySQL 使用SQL语句修改表名的实现
Apr 07 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
Mysql中存储引擎的区别及比较
Jun 04 MySQL
mysql left join快速转inner join的过程
Jun 30 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 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 header()函数常用方法总结
2014/04/11 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
简单谈谈favicon
2015/06/10 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Python适配器模式代码实现解析
2019/08/02 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
工作求职自荐信
2014/06/13 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
11.9消防日宣传标语
2014/10/08 职场文书