实战SQL语句
@Query(value = " select * from event e "
+ " where (e.event_title like CONCAT('%',?1,'%') or ?1 is null) "
+ " and (to_days(e.register_time)=to_days(?2) or ?2 is null) "
+ " and e.status = '1' "
+ " order by e.register_time desc limit ?3,?4 ",nativeQuery = true)
List<Event> findAllList(String eventTitle,Timestamp registerTime,Integer pageNumber,Integer pageSize);
精华分析
(to_days(e.register_time)=to_days(?2) or ?2 is null)
我们可以用to_days吧Timestamp转换为日期,这样方便进行计算。
如果查询今天的日期,例如之前排队系统,可以使用now()来限定
to_days(lastupdatetime) = to_days(now())
to_days也是mysql一个函数,给定一个日期,返回一个天数。转换威天数,利用天数的值大小,就可以判断是否同一天了。