ibatis截取oracle日期,关于Ibatis 转换 oracle date类型的问题

最近遇到两个关于Ibatis 转换date类型的问题,记录一下:

sql_text:

select distinct t.cc                from aa t

where t.update_time > :1 and t.update_time < :2

Optimizer Plan:

-----------------------------------------------------------------------------------------------------------

| Operation                         |  Name                        |  Rows | Bytes|  Cost  | Pstart| Pstop |

------------------------------------------------------------------------------------------------------------

| SELECT STATEMENT                  |                              |       |      | 226780 |       |       |

| HASH UNIQUE                       |                              |     5K|   72K| 226780 |       |       |

|  FILTER                           |                              |       |      |        |       |       |

|   TABLE ACCESS FULL               |AA                            |    69K|  949K| 226774 |       |       |

------------------------------------------------------------------------------------------------------------

开始一看以为是没建索引,但是发现索引是存在的,同时explain plan 发现走的也是正确的执行计划。

怀疑是统计信息的问题,于是重新收集了统计信息,并重新生成了执行计划,但是还是同样的。因为那天通宵了一夜,

头脑比较晕,没明白是怎么回事。

回家后仔细看了一下v$sql_plan ,发现如下信息:

(INTERNAL_FUNCTION("S"."UPDATE_TIME")>=:1 AND INTERNAL_FUNCTION("S"."UPDATE_TIME")表示oracle对这个字段做了转换后再去比较,于是怀疑应用里的类型不对,开发同事提供了如下sql,虽然他传入配置文件的属性是date型。

但是IbatiS并没有转换成oracle能识别的date型: select distinct t.cc                from aa t

where t.update_time > #startTimeStr# and t.update_time < #endTimeStr#

于是通知开发修改语句:

update_time >= to_date(#startTimeStr#,'yyyy-mm-dd hh24:mi:ss') and update_time < to_date(#endTimeStr#,'yyyy-mm-dd hh24:mi:ss')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值