问题引入:
现在有这么一个需求,让数据库中的一个时间字段作为条件,进行数据的条件查询
时间的选择区间是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工具类,然后可以转换任意格式
具体怎么写就不详细描述了,需要的同学可以找我要,网上也有很多的。
以上就是可能会遇到的问题,大家共勉。