码迷,mamicode.com
首页 > 数据库 > 详细

MySQL TIMESTAMP 类型加索引时出现的bug

时间:2017-11-17 21:11:15      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:end   dstat   解决   mkt   stat   begin   删掉   数据   java   

    数据库:MySQL,版本:5.1.45

    查询语句1:

    select id, settlement_begin_time , settlement_end_time  from mkt_vendor_settlement_brief where settlement_begin_time >= ‘2017-09-01 00:00:00.0‘ and settlement_end_time <=  ‘2017-09-30 23:59:59.0‘;

    结果:

    技术分享图片

    查询语句2:

    select id, settlement_begin_time , settlement_end_time  from mkt_vendor_settlement_brief where settlement_begin_time >= ‘2017-09-01 00:00:00‘ and settlement_end_time <=  ‘2017-09-30 23:59:59.0‘

    结果:

    技术分享图片

     对settlement_begin_time 添加了索引,查询语句的区别: 一个有".0"一个没有“.0”

     删掉索引后有".0"的也能正常查询。

     经调查,这是MySQL的一个bug,在后续版本中已经修复,本人使用mysql5.5进行测试一切正常。

     出现此问题时的解决方案:

      1.  升级MySQL版本,最有效

      2. 曲线救国,Java代码中,预先将Timestamp类型的数据进行格式化,然后以字符串的方式放入查询语句,因为mysql-jdbc调用的  “PreparedStatement” 的setTimestamp方法会加上".0"

MySQL TIMESTAMP 类型加索引时出现的bug

标签:end   dstat   解决   mkt   stat   begin   删掉   数据   java   

原文地址:http://www.cnblogs.com/hungry-bird/p/7853170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!