前台传入long类型数字,如何在数据库中当做比较条件

   一般都是前台页面有搜索框,框内有开始时间和结束时间,使用这种区间数值进行查询数据,我会使用以下简单的方法.
   1.前台页面向后台传递LONG类型开始和结束时间的毫秒值
   ![在这里插开始入图片描述](https://img-blog.csdnimg.cn/20181128111720198.png)
   2.后台接收此13位LONG类型毫秒值后可以把这个值格式化成字符串格式,如20180808(以后数据库转换时间为字符串时也使用此格式,方便比较)
//格式化Date类型数据之后的格式
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYMMdd");
  //判断前台传入的搜索对象是否为空
        if (null != search) {
            if (null != search.getStartTime()) {
            //取到前台传入的Long类型数值,转换成Date类型数据
                Date startTime = new Date(search.getStartTime());
                //把Date类型数据格式化为字符串类型,封装回搜索对象内的相关字段保存
                search.setStartTime_str(simpleDateFormat.format(startTime));
            }
            //如上
            if (null != search.getEndTime()) {
                Date endTime = new Date(search.getEndTime());
                search.setEndTime_str(simpleDateFormat.format(endTime));
            }
        }

3.把搜索对象传递到Mapper接口中

//此处做的带条件分页,可忽略分页相关信息
    List<UserStatistics> findPageByMap(@Param("search") Search search,@Param("pageable") Pageable pageable);

4.在mapper.xml文件中取值,进行比较,进行字符串比较之前,需要使用sql的时间处理函数把时间类型转成字符串类型,然后使用between and 进行比较即可

//此为实现此比较的条件
//DATE_FORMAT(需要比较的时间,转换之后的格式)
//login_time:->date类型字段
//
|%Y| 代表年,4位数字,如2018 |
|%m|代表月份,2位,如01|
|%d  | 代表日,2位,如01 |
还有时分秒:%H:%i:%S',可以根据精度添加
SQL条件:
DATE_FORMAT(login_time,'%Y%m%d') BETWEEN #{search.startTime_str} AND #{search.endTime_str}
注,此方法为闭环,包含开始和结束时间,至此即可实现时间比较方法

猜你喜欢

转载自blog.csdn.net/ip15988/article/details/84581570