首页 > 数据库 >使用 Mybatis 对 mysql 查询时间范围

使用 Mybatis 对 mysql 查询时间范围

时间:2023-04-14 19:36:05浏览次数:38  
标签:-% effective time 查询 date startTime mysql Mybatis endTime

需求:1. 传入开始时间(startTime)和结束时间(endTime), 查询 effective_time 在区间 [startTime, endTime] 中的数据。

Controller 中的时间入参用 String 表示:

// 查询接口,默认查询今年内的数据。
    @GetMapping(value = "/getData")
    public List<Demo> selectDemoData(@RequestParam(value = "startTime", required = false) String startTime, 
	@RequestParam(value = "endTime", required = false) String endTime) {
        // 校验传入的日期格式
        // ...
		
        return demoService.selectDemoData(startTime, endTime);
    }

mapper 中的sql操作如下,注意要使用mysql的 str_to_date 函数将字符串转成Date再比较。

<!--  查询接口,默认查询今年内的数据   -->
<select id="selectDemoData" resultType="Demo">
   select * 
   from `demo`
   <where>
       <!--  开始时间和结束时间都为空,则查询今年数据   -->
            <if test="(startTime == null or startTime == '') and (endTime == null or endTime == '')">
                YEAR(`effective_time`) = YEAR( NOW( ) )
            </if>

            <!--  开始时间不为空   -->
            <if test="startTime != null and startTime != ''">
                and date_format(`effective_time`,'%Y-%m-%d') &gt;= str_to_date(#{startTime},'%Y-%m-%d')
            </if>

            <!--  结束时间不为空   -->
            <if test="endTime != null and endTime != ''">
                and date_format(`effective_time`,'%Y-%m-%d') &lt;= str_to_date(#{endTime},'%Y-%m-%d')
            </if>
   </where>
</select>

标签:-%,effective,time,查询,date,startTime,mysql,Mybatis,endTime
From: https://www.cnblogs.com/FengZeng666/p/17319624.html

相关文章

  • 运行mysql容器以及通过命令行访问数据库
    运行mysql容器下面命令将创建一个名为mysql-8.0.31的容器,并将容器中的MySQL根密码设置为root。dockerrun--namemysql-8.0.31-p3306:3306-eMYSQL_ROOT_PASSWORD=root-dmysql:8.0.31访问mysqlmysql-h127.0.0.1-P3306-u<username>-p导入sql文件创建数据......
  • Java接收到MySQL数据库查询出的date类型的数据输出格式不对
    问题查询某条数据,里面有个effective_time字段,数据库里保存的该条数据的effective_time的值是2023-04-13,但是使用postman调用接口,返回的确是2023-04-12T16:00:00.000+00:00,不仅格式不对,而且时间还慢了一天。但是在application.yml中配置数据库连接的时候,确实指定了时区......
  • 营业执照15位注册号码含义和查询规则
    我国现行的营业执照上的注册号都是15位的,不存在13位的,从07年开始国家进行了全面的注册号升级就全部都是15位的了,如果你看见的是13位的注册号那肯定是假的。下面我来说一下注册号15位数字的含义,代码结构工商注册号由14位数字本体码和1位数字校验码组成,其中本体码从左至右依......
  • MySQL学习笔记-索引
    索引索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。无索引的查找:全表扫描(将整张表遍历一遍),性能......
  • MySQL数据库实现主主同步
    前言MySQL主主同步实际上是在主从同步的基础上将从数据库也提升成主数据库,让它们可以互相读写数据库,从数据库变成主数据库;主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程,只要对方数据改变,自己就跟着改变。1.主主同步的优与劣事实上每个技术都有它的优劣势,我们......
  • mysql之审计
    ###################https://blog.csdn.net/weihaodong0557/article/details/113805838  showvariableslike'have%';   //查看hava_openssl mkdir/home/work/mysql_3306/ssl//home/work/mysql_3306/bin/mysql_ssl_rsa_setup--datadir=/home/work/mysql_33......
  • 【MySQL】Navicat Premium连接MySQL错误
    mysql8.0出现的2059-authenticationplugin'caching_sha2_password'-navicat连接异常问题解决1.找到配置文件my.ini将default_authentication_plugin=caching_sha2_password改为default_authentication_plugin=mysql_native_password2.用命令行登陆mysql-uroot-p123......
  • MySQL(十四)分析查询语句Explain 七千字总结
    分析查询语句:EXPLAIN1概述​ 定位了查询慢的SQL之后,就可以使用EXPLAIN或者DESCRIBE工具做针对性的分析查询。两者使用方法相同,并且分析结果也是相同的。​ MySQL中有专门负责SQL语句优化的优化器模块,主要功能是计算分析系统中收集到的统计信息,为客户端请求的Query提供它最优的......
  • Mybatis-plus 中Wrapper的使用
    mybatisplus条件构造器关系图1.上图绿色框为抽象类abstract2.蓝色框为正常class类,可new对象3.黄色箭头指向为父子类关系,箭头指向为父类QueryWrapper继承自AbstractWrapper,自身的内部属性entity也用于生成where条件及LambdaQueryWrapper,可以通过newQueryWrap......
  • python3 各种方式连接mysql数据库
    print("python连接mysql数据库")#importmysql.connector"""#1使用mysql-connector连接mysqlimportmysql.connectormydb=mysql.connector.connect(host="localhost",user="clever",passwd="1881301"......