Mybatis查询一段时间内数据,按时间分组,返回时间格式化sql

Mybatis查询一段时间内数据,按时间分组,返回时间格式化sql问题

日常查询中sql语句中会带有时间段的条件查询,我举例的数据库中storage_time表示的是时间,storage_channel可以当做商品类型

请添加图片描述

查询出来返回时间

请添加图片描述

根据时间分组

请添加图片描述

完整的sql

请添加图片描述

查询得出的数据请添加图片描述

时间分组效果不是我想要的,12号这一天因为时刻的不同当天又被分成了很多个组,而且查询结果时间这一列格式也不是我想要的,显示的时候把时分秒去掉,所以在显示的时候可以加上格式化

时间格式化:
date_format(storage_time,'%Y-%m-%d') t 

更改之后的sql为,storage_time起别名t

请添加图片描述

查询结果为,现在就不带时分秒了请添加图片描述

但是这样去使用在mybatis上会出现问题,接收不到数据,查询出来后返回的时间是null,这让我很奇怪,想了各种办法行不通,但我们依然还是要根据当天的时间分组,分析问题出在查询列表上,显示的时候不能进行时间格式化,分组的时候需要格式化后的时间分组

更新查询sql

请添加图片描述

查询结果

请添加图片描述

根据查询结果可以看出虽然还是带着时分秒,但是分组下来的结果是正确的,是根据当天的几号分组的,当然返回到业务层的数据也是带着时分秒的,既然已经拿到正确的数据,在业务层或者你的控制层对数据进行一下处理就行。

假如这里拿出第一条数据的时间,截取前10位字符,处理完之后,再封装返回到前端就可以了请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个持久框架,可以在Java应用程序中轻松地管理数据库访问。在MyBatis中,可以使用时间参数来处理时间相关的数据库操作。 在MyBatis中,时间参数可以使用Java的Date、Calendar或者Java8的LocalDateTime等类型来表示。可以通过在映射文件中使用#{parameterName, jdbcType=TIMESTAMP}的方式来指定参数类型为时间类型。 对于查询操作,可以使用时间参数来筛选指定时间段内的数据。例如,可以通过在SQL语句中使用 BETWEEN 操作符来筛选指定日期范围内的数据。示例代码如下: ``` <select id="selectByDateRange" resultType="com.example.model.User"> SELECT * FROM user WHERE create_time BETWEEN #{startDate} AND #{endDate} </select> ``` 在使用MyBatis时,时间参数还可以进行格式转换。可以使用Java中的SimpleDateFormat类进行格式转换,将字符串类型的时间参数转换为Java的Date类型。示例代码如下: ``` public Date parseDate(String dateString) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.parse(dateString); } ``` 在进行时间参数比较时,可以使用Java时间比较方法,如compareTo()方法来比较两个时间的先后顺序。示例代码如下: ``` public List<User> selectByDateRange(Date startDate, Date endDate) { List<User> userList = userDao.selectByDateRange(startDate, endDate); Collections.sort(userList, (u1, u2) -> u1.getCreateTime().compareTo(u2.getCreateTime())); return userList; } ``` 总之,MyBatis中的时间参数可以方便地处理时间相关的数据库操作,通过合适的类型转换和比较方法,可以实现对指定时间段内的数据进行筛选和排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值