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

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

服务器之家 - 数据库 - Mysql - 关于mysql时间区间问题浅析

关于mysql时间区间问题浅析

2022-10-24 15:06二狗的程序人生 Mysql

在很多地方都使用到了mysql的日期查询,下面这篇文章主要给大家介绍了关于mysql时间区间问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、between……and……

SELECT * FROM 表名 WHERE 开始时间字段名 BETWEEN '2018-09-01' AND '2018-09-14'; 

发现9月14号的数据没有出来,那就证明between……and……是左闭右开,即[a,b),包含a的值,不包含b的值。

将上面代码修改下面的语句即可,将原来的日期加上一天,就行。

select * from 表名 where 字段名 BETWEEN '2018-08-08' and DATE_ADD('2018-09-14',INTERVAL 1 DAY);

这个问题其实代入到数学中很简单。

我测试的时候和同事说没有包含这一天的数据,还争论了半天,其实是因为思维的问题,程序员的思维和正常人的思维是有一定差异的。就像我有时候就会从0开始数东西,到最后发现不对。当然生活中还是要正常,工作中不正常的需求太多了。

二、<和>问题

我的项目用的mybatis,下面就是截取mapper的一部分,其实和上面的between一样的用法

?
1
2
3
4
5
6
<if test="开始时间字段名 != null and 开始时间字段名 != ''">
   AND 开始时间字段名 &gt;= #{前台传的值}
</if>
<if test="结束时间字段名!= null and 结束时间字段名!= ''">
   AND 结束时间字段名 &lt;= DATE_ADD(#{前台传的值},INTERVAL 1 DAY)
</if>

三、在java代码中拼接

在代码中拼接,用上面的&lt;和&gt;查询,简单粗暴,只是记录一下实现方法

?
1
2
3
4
5
6
if(StringUtils.isNotEmpty(beginDate)){
  params.put("beginDate",beginDate+" 00:00:00");
}
if(StringUtils.isNotEmpty(endDate)){
  params.put("endDate",endDate + " 23:59:59");
}

四、转变格式查询

问题描述:db存的格式一般是“yyyy-MM-dd HH:mm:ss”,但是前台查询并不会这样精确,往往会传“yyyy-MM-dd”格式的,像上面的拼接就会显得极及的LOW,在XXXMapper.xml的sql语句中完成会很优雅。

AND DATE_FORMAT(存日期的字段, '%Y-%m-%d') &gt;= #{Entity日期属性}

附:Mysql如何实现指定时间区间的所有日期

Mysql没有递归查询,是如何实现指定日期查询的:mysql.help_topic 这时候就可以使用mysql自带的这个表来实现。(算是取巧的方法,暂时没找到更好的方法)

?
1
2
3
SELECT DATE_FORMAT( date_add(concat('2019-01-01'), interval(help_topic_id) DAY),'%Y-%m-%d') DT
        FROM mysql.help_topic
        WHERE help_topic_id  <=  timestampdiff(DAY,concat('2019-01-01'),concat('2019-12-01'))

关于mysql时间区间问题浅析

总结

到此这篇关于mysql时间区间问题的文章就介绍到这了,更多相关mysql时间区间问题内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_20552525/article/details/82704556

延伸 · 阅读

精彩推荐
  • Mysqlmysql查询条件not in 和 in的区别及原因说明

    mysql查询条件not in 和 in的区别及原因说明

    这篇文章主要介绍了mysql查询条件not in 和 in的区别及原因说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    卡卡西sensi8702021-03-27
  • Mysqlmysql 8.0.27 安装配置方法图文教程(Windows64位)

    mysql 8.0.27 安装配置方法图文教程(Windows64位)

    这篇文章主要为大家详细介绍了mysql 8.0.27 下载、安装与配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    星泽_.8532022-10-21
  • Mysqlmysql主键的缺少导致备库hang住

    mysql主键的缺少导致备库hang住

    最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性...

    hidba5122020-06-10
  • MysqlMySQL插入数据与查询数据

    MySQL插入数据与查询数据

    这篇文章主要介绍了 MySQL插入数据与查询数据,缺省插入、缺省插入、缺省插入等各种数据插入分享,需要的小伙伴可以参考一下,希望对你有所帮助...

    江下下啊9792022-10-12
  • MysqlMYSQL Left Join优化(10秒优化到20毫秒内)

    MYSQL Left Join优化(10秒优化到20毫秒内)

    在实际开发中,相信大多数人都会用到join进行连表查询,但是有些人发现,用join好像效率很低,而且驱动表不同,执行时间也不同。那么join到底是如何执...

    幽寒冰魄5632022-01-25
  • Mysqlmysql修改表结构方法实例详解

    mysql修改表结构方法实例详解

    这篇文章主要介绍了mysql修改表结构方法,以实例形式较为详细的分析了mysql修改表结构的具体方法与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参...

    w932230104092020-05-20
  • Mysqlmysql group_concat()函数用法总结

    mysql group_concat()函数用法总结

    这篇文章主要介绍了mysql group_concat()函数用法,结合实例形式较为详细的group_concat()函数的功能、使用方法与相关注意事项,需要的朋友可以参考下...

    wangtaotao8882020-06-15
  • MysqlMysql主从数据库(Master/Slave)同步配置与常见错误

    Mysql主从数据库(Master/Slave)同步配置与常见错误

    今天小编就为大家分享一篇关于Mysql主从数据库(Master/Slave)同步配置与常见错误,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋...

    CODETC5272019-06-24