问题引入:
现在有这么一个需求,让数据库中的一个时间字段作为条件,进行数据的条件查询

时间的选择区间是startTime—endTime
数据库的字段作为gmtCreateTime.
对于sql来说是比较简单的
select * from student where gmtCreateTime>= startTime && gmtCreateTime<=endTime.
但是比较迷惑人的是mapper里面的表达式。
首先是符号的转义

或者可以用表达式
其次是时间的格式问题
数据库里面都是时间戳类型,如果进行时间格式的转换再比较也是可以的,但是我们大部分会采用在biz里面进行时间类型的转换,这里我的前端是用angular,所以日期的传参我用的string类型的的格式

所以接下来需要进行的就是日期的格式转换,需要将字符串的格式转为日期格式的类型,能够和数据库里面的数据进行比较大小。
这里有两种方式可供参考
第一
加入这时候时间是如下字符串
`String string= "2014-3-17";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date =null;
try {
date = dateFormat.parse(string);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);`
运行结果如下图所示,

第一个运行结果完全可以作为参数,去mapper中取出并查询
第二个运行结果是如果需要存到数据库的格式有要求,可以自己更改所需格式但是这个也是字符串类型的。
第二
自己写一个dateUtil工具类,然后可以转换任意格式

具体怎么写就不详细描述了,需要的同学可以找我要,网上也有很多的。
以上就是可能会遇到的问题,大家共勉。
本文探讨了在数据库查询中如何使用时间戳字段进行条件筛选,重点介绍了在mapper表达式中处理时间范围查询的方法,包括符号转义及前端传参的日期格式转换,通过实例演示了如何将字符串日期转换为可比较的日期类型。
10万+

被折叠的 条评论
为什么被折叠?



