mysql timestamp 加_MySQL TIMESTAMP 类型加索引时出现的bug

数据库: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‘;

结果:

ee4976a926a52a741a2f08f82d4abe08.png

查询语句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‘

结果:

a21fe073f84a8524f5c3b1d9a22e6a0b.png

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

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

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

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

1.  升级MySQL版本,最有效

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值