前言
项目中有个场景需要查询一段时间内的记录,比如,查询指定用户今天的收藏记录
测试场景重现
前提
数据库中数据:有一条更新时间为【2019-01-01 15:10:20】的数据
查询条件
开始日期:2019-01-01 14:00:00
结束日期:2019-01-01 15:20:30
model_id: Buw2y9CQMmc1tX7HQw9MLx
scene_id: scene1
查询结果
0条记录
问题追踪
可能的原因:
- 时区问题(排除)
- 传参问题(参数不正确,排除)
- 返回值问题(date和string的转换,排除)
- 查询方式问题(靠点谱,接着看)
当时间传参方式为date或 timestamp 格式时,查询开始日期和结束日期时间差超过一天时,查询结果正常;
当开始日期和结束日期时间差在一天内时,查询结果异常
传参方式为Date类型(java.util.Date)(查询结果个数为 0):
## Mapper.xml
<select id = "getTimes" parameterType="map" resultType="java.lang.Integer">
select
count(*) from t_model_monitor
where scene_id =#{sceneId}
and model_id= #{modelId}
<if test=