栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis datetime 毫秒问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis datetime 毫秒问题

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
// 将小时至0
calendar.set(Calendar.HOUR_OF_DAY, 0);
// 将分钟至0
calendar.set(Calendar.MINUTE, 0);
// 将秒至0
calendar.set(Calendar.SECOND, 0);
Date timestamp = calendar.getTime();
Map params = ContentValues.obtain().put("timestamp",timestamp).getValues();
List> records= recordMapper.queryRecordsByTimestamp(parmas);

@Query("select id,name,size from t_opration_recoreds where timestamp >= #{timestamp}")
List> queryRecordsByTimestamp(Map paramMap);

上面的代码逻辑为查询昨天和今天的操作记录 看起来没有任何问题 查询结果可能也没问题

但当有数据timestamp是昨天0点0分0秒0毫秒时 而calendar是01毫秒时创建的 那这条数据时查询不出来的 因为mybatis参数是date时 毫秒是会参与比较的 以下为查询时mybatis的日志

- ==>Preparing: select id,name,size from t_opration_recoreds where timestamp >= ?
- ==> Parameters: 2020-03-23 00:00:00.135(Timestamp)
- <== ? ? ?Total: 2822

timestamp的cdate.toString为2020-03-23T08:00:00.135+0800

然而实际条数是2823条 查看日志发现timestamp为2020-03-23 00:00:00.135 日期里有毫秒 而记录的timestamp为2020-03-23 00:00:00 肯定查询不到

解决办法

//方式一
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
// 将小时至0
calendar.set(Calendar.HOUR_OF_DAY, 0);
// 将分钟至0
calendar.set(Calendar.MINUTE, 0);
// 将秒至0
calendar.set(Calendar.SECOND, 0);
//毫秒至0
calendar.set(Calendar.MILLISECOND,0);

//方式二  共用考虑线程安全
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-03-23");
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号