`
ssxxjjii
  • 浏览: 950654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于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")<:2

表示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')

分享到:
评论

相关推荐

    Ibatis调用Oracle存储过程返回自定义类型

    ### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...

    ibatis+oracle实例

    1. **数据类型**:Oracle支持多种数据类型,如`NUMBER`(数值)、`VARCHAR2`(可变长度字符串)、`DATE`(日期时间)、`CLOB`(大对象)等。 2. **索引**:为了提高查询效率,Oracle允许为表的列创建索引。B树索引...

    oracle基础练习.docx

    Oracle提供多种数据类型,如CHAR、VARCHAR2、NUMBER、DATE以及LOB(包括BLOB和CLOB)。日期格式可以使用TO_DATE函数转换,例如`to_date('2016-6-1','yyyy-MM-dd')`,或者直接使用DATE'2016-6-1'。 分析函数如RANK()...

    mybatis如何使用Java8的日期LocalDate和LocalDateTime详解

    在Java 8中,Oracle引入了全新的日期时间API,包括`LocalDate`、`LocalTime`和`LocalDateTime`,这些类提供了更加直观且强大的日期时间处理能力,替代了传统且复杂的`java.sql.Date`、`java.sql.Timestamp`和`java....

    Java机试相关题目34题

    9. 金额转换问题:将阿拉伯数字形式的金额转换为中文大写金额,如“1011”转换为“一千零一拾一元整”。这通常需要根据中文数字的规则来设计转换逻辑。 10. Java通信编程与Socket:Java的Socket编程用于实现基于TCP...

    AppFramework_V1.0

    &lt;br&gt; &lt;br&gt;AppFramework数据库访问组件针对IBatisNet的种种缺陷提出相应的解决方案,相比之下有如下优势: &lt;br&gt;1、 从扩展基础数据类型入手,解决了空值问题和默认值问题; &lt;br&gt;2、 提供了内置的数据库...

    J2EE与数据库.docx

    - `TO_DATE`: 将字符串转换为日期类型。 - `DECODE`: 实现类似于 `CASE WHEN` 的逻辑判断。 - `NVL`: 当给定的表达式为 NULL 时,返回指定的替代值。 #### 九、Oracle 存储过程语法 **知识点解析:** 存储过程是一...

    AppFramework_V1.0_New

    &lt;br&gt; &lt;br&gt;AppFramework数据库访问组件针对IBatisNet的种种缺陷提出相应的解决方案,相比之下有如下优势: &lt;br&gt;1、 从扩展基础数据类型入手,解决了空值问题和默认值问题; &lt;br&gt;2、 提供了内置的数据库...

    java必备知识点大全.pdf

    时间类型转换:在Java中,处理时间类型通常会用到Date、Calendar、LocalDate等类,并且需要进行相应的类型转换。 阶乘:一个正整数的阶乘是所有小于及等于该数的正整数的积。 UE和UI的区别:UE是指用户体验(User ...

    自整理Java关于基础和框架的面试题

    ### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...

    java面试知识

    - **Java 8之前**:使用Date类配合SimpleDateFormat进行转换。 - **Java 8及以后**:推荐使用java.time包下的类,如LocalDateTime、Instant等。 ##### 阶乘 - **定义**:一个正整数n的阶乘(n!)是从1乘到n的所有...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    IBatisNet获得高性能与灵活性也是付出代价的,它牺牲了数据库可移植性:由于编写SQL模板不得不用到数据库产品的一些语法差异,例如ORACLE的TO_DATE、Length()、SYSDATE等,为了把产品移植到其它数据库,开发人员不得...

Global site tag (gtag.js) - Google Analytics