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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值