时间作为一个需求的筛选条件时,需要注意的问题

问题引入:
现在有这么一个需求,让数据库中的一个时间字段作为条件,进行数据的条件查询
在这里插入图片描述
时间的选择区间是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);`
    
    运行结果如下图所示,

时间作为一个需求的筛选条件时,需要注意的问题_第1张图片
第一个运行结果完全可以作为参数,去mapper中取出并查询
第二个运行结果是如果需要存到数据库的格式有要求,可以自己更改所需格式但是这个也是字符串类型的。
第二
自己写一个dateUtil工具类,然后可以转换任意格式
时间作为一个需求的筛选条件时,需要注意的问题_第2张图片
具体怎么写就不详细描述了,需要的同学可以找我要,网上也有很多的。
以上就是可能会遇到的问题,大家共勉。

你可能感兴趣的:(Java基础)