碰上一个问题, mybatis 和 navicat 中输入同样的 sql 但是查到的结果不一样 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guodastanson
V2EX    Java

碰上一个问题, mybatis 和 navicat 中输入同样的 sql 但是查到的结果不一样

  •  
  •   guodastanson 2019 年 4 月 30 日 5326 次点击
    这是一个创建于 2551 天前的主题,其中的信息可能已经有所发展或是发生改变。

    java web 项目,用的 springboot 构建的,数据库是 mysql 写了个 select 语句,控制台输出的 sql 如下 select id, duty_type, date, tips from schedule s where s.date BETWEEN ? AND ? 2019-04-30 10:43:17.226 DEBUG 3148 --- [nio-7777-exec-9] c.i.i.dao.ScheduleMapper.selectByDate : ==> Parameters: 2019-02-13(Date), 2019-04-23(Date)

    然后在 navicat 中输入查询的 sql 如下 select id, duty_type, date, tips from schedule s where s.date BETWEEN '2019-04-10' AND '2019-04-23' ;

    在我看来是一模一样的,但是实际上通过 mybatis 查到的结果相当于直接查询 between '2019-04-10' AND '2019-04-22' 也就是说要少了一天 数据库中 date 的数据类型也是 date,这个问题很让我困惑,不知道有没有大佬告知一下。

    16 条回复    2019-04-30 16:52:43 +08:00
    Citrus
        1
    Citrus  
       2019 年 4 月 30 日 via iPhone   1
    是你打错了,还是你没看清。。。日期完全不一样啊。。。
    kidtest
        2
    kidtest  
       2019 年 4 月 30 日   1
    mybatis 查询好像确实有这个问题,https://www.cnblogs.com/EasonJim/p/7513743.html
    guodastanson
        3
    guodastanson  
    OP
       2019 年 4 月 30 日
    @Citrus 没打错,日期我看 mybatis 跟 navicat 一模一样,但是结果就是会差一天的数据
    guodastanson
        4
    guodastanson  
    OP
       2019 年 4 月 30 日
    @kidtest 先谢后看,谢谢
    guodastanson
        5
    guodastanson  
    OP
       2019 年 4 月 30 日
    @kidtest 已经解决,手动给他调成 23:59:59 了
    TommyLemon
        6
    TommyLemon  
       2019 年 4 月 30 日
    检查配置,charset,timezone 等
    w292614191
        7
    w292614191  
       2019 年 4 月 30 日
    and date <= '2019-05-30' and date >='2019-04-30'。
    between : and date< '2019-05-30' and date > '2019-04-30'。
    一个包含?一个包含?
    我也不知道,瞎猜的。
    walkman660
        8
    walkman660  
       2019 年 4 月 30 日
    管那么多干嘛,以服务器上 mysql 命令行查出来的为准肯定没问题
    哪个客户端和 mysql 命令行查出来的不一样,哪个客户端就是有问题
    ETiV
        9
    ETiV  
       2019 年 4 月 30 日 via iPhone
    找个数据库开 general log,看收到的是啥
    不写 Java,但看到了( Date ),盲猜是帮你转了和数据库不一致的时区的时间
    guodastanson
        10
    guodastanson  
    OP
       2019 年 4 月 30 日
    @ETiV 不是时区问题,上面有朋友给出答案了,确实是 mybatis 的锅
    guodastanson
        11
    guodastanson  
    OP
       2019 年 4 月 30 日   1
    @w292614191 between 就是包含,锅还是在 mybatis
    guodastanson
        12
    guodastanson  
    OP
       2019 年 4 月 30 日
    @TommyLemon utf-8,东八区这都没问题
    fmumu
        13
    fmumu  
       2019 年 4 月 30 日 via Android
    mybatis 里参数类型用的 Date,navicat 用的字符串,肯定不一样啊
    hhhzccc
        14
    hhhzccc  
       2019 年 4 月 30 日   1
    比如:2019-04-23 17:20:00 不在你那个 between and 里面。oracle,mysql 要注意这个问题。不想精确到分秒可以:date '2019-04-23' +1 或者:date '2019-04-23 23:59:59'。
    silentstorm
        15
    silentstorm  
       2019 年 4 月 30 日
    因为没有写时间,所以都是按照 00:00:00 来计算的,区间的右端肯定不包含当天了。
    MajorAdam
        16
    MajorAdam  
       2019 年 4 月 30 日
    这个不是 bug 啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1491 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 16:58 PVG 00:58 LAX 09:58 JFK 12:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86