MYSQL之查询Timestamp某个日期的数据

实战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 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一个函数,给定一个日期,返回一个天数。转换威天数,利用天数的值大小,就可以判断是否同一天了。

拓展

MYSQL之查询Timestamp某个日期的数据_第1张图片

如果是传入string到数据库,那么需要FROM_UNIXTIME来格式化再转为to_days

SELECT
  CURRENT_TIMESTAMP,
    FROM_UNIXTIME( '1531324800','YYYY-MM-DD' ),
    NOW( ),
    to_days( createtime ),
    to_days( NOW( ) ),
    to_days( FROM_UNIXTIME( '1531324800' ) ) ,
    UNIX_TIMESTAMP(),
    UNIX_TIMESTAMP('1532324800')
FROM
    gene_info t;

你可能感兴趣的:(数据库)