最近项目用到一个按时间区间作为查询条件进行查询,我在MySQL中使用date函数加between、and方式进行筛选,但是加入时分秒之后选择就不可以了具体如图:请问有没有大神了解这是什么情况啊,date函数是只关注时分秒嘛?

解决方案 »

  1.   

    刚刚上网查了一下MySQL中date函数详解,发现date函数只提取日期部分。具体可参考这篇文章:https://www.jb51.net/article/142737.htm
      

  2.   

    MYSQL的官方免费手册是最好的参考文档。
      

  3.   

    drop table if exists `test`;
    create table `test`(
    `create_time` datetime
    );
    insert into `test` values('2018-11-22 14:14:34');
    insert into `test` values('2018-11-22 14:14:49');
    insert into `test` values('2018-11-22 14:18:40');
    insert into `test` values('2018-11-22 14:30:31');
    insert into `test` values('2018-11-22 14:32:57');
    insert into `test` values('2018-11-23 14:54:36');
    insert into `test` values('2018-11-24 16:27:15');
    -- #以上为测试数据 --
    select * from test
    where create_time between 
    date('2018-11-22 18:17:33')
    and 
    DATE_ADD('2018-12-19 18:17:33',INTERVAL 1 DAY)
    ;
    一般来说, 不应该在 where 后的字段上加任何函数, 这样会影响查询效率。
    where date(create_time) 的做法是错误的。要包装, 只能包装后面的常量部分。
      

  4.   

    create_time 字段上面, 一般会加索引。
    但 date(create_time) 会使索引失效。
      

  5.   

    后边的时间,改成类似这个样子。
    STR_TO_DATE('2018-01-02 03:04:05','%Y-%m-%d %H:%i:%s')