服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - Mysql查询时间区间日期列表实例代码

Mysql查询时间区间日期列表实例代码

2022-10-21 16:00码奴生来只知道前进~ Mysql

最近常用到mysql的日期范围搜索,下面这篇文章主要给大家介绍了关于Mysql查询时间区间日期列表的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

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查询时间区间日期列表内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/tanqingfu1/article/details/121656404

延伸 · 阅读

精彩推荐
  • MysqlMySQL中大数据表增加字段的实现思路

    MySQL中大数据表增加字段的实现思路

    最近遇到的一个问题,需要在一张将近1000万数据量的表中添加加一个字段,但是直接添加会导致mysql 奔溃,所以需要利用其他的方法进行添加,这篇文章主...

    小谈博客3252020-07-12
  • Mysql如何解决mysql无法关闭的问题

    如何解决mysql无法关闭的问题

    在本篇文章里小编给大家整理的是一篇关于解决mysql无法关闭的问题的相关内容,需要的朋友们可以参考下。...

    尤及13362021-01-28
  • MysqlMySQL触发器的使用

    MySQL触发器的使用

    触发器用于在 MySQL 执行插入、更新或删除语句时,自动触发执行其他SQL代码。本文讲解触发器的正确使用方式...

    岛上码农10802021-07-20
  • Mysqlmysql用一个表更新另一个表的方法

    mysql用一个表更新另一个表的方法

    下面小编就为大家带来一篇mysql用一个表更新另一个表的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    mysql教程网5192020-07-08
  • Mysqlmysql清空表数据的两种方式和区别解析

    mysql清空表数据的两种方式和区别解析

    这篇文章主要介绍了mysql清空表数据的两种方式和区别,本文通过文字实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参...

    赵帅强3972020-09-23
  • Mysql详解MySQL中的缓冲池(buffer pool)

    详解MySQL中的缓冲池(buffer pool)

    这篇文章主要介绍了MySQL中的缓冲池(buffer pool)的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下...

    *IT界农民工*11112021-03-31
  • MysqlQT连接MYSQL数据库的详细步骤

    QT连接MYSQL数据库的详细步骤

    这篇文章主要介绍了QT连接MYSQL数据库的详细步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可...

    牛牛ly7002021-08-31
  • Mysql深入Mysql字符集设置分析

    深入Mysql字符集设置分析

    深入Mysql字符集设置分析,使用mysql的朋友可以参考下 ...

    MYSQL教程网3312019-12-01