oracle:
    此执行是在oracle下!
关于日期和时间的问题,date只有日期   timestamp 带有时分秒
一  #号取值
    1.date
        insert into table (column1) values (#{aa,jdbcType=DATE})
 
    语句执行的sql:
        insert into table (column1)  values (to_date('08/27/2015 20:20:20', 'mm/dd/yyyy hh24:mi:ss'))
 
    实际插入到数据库的结果:
 
    2015/08/27
  --只有日期! 没有时间
 
** PS: 如果 aa取值时是null 或 "" 则插入到数据库里的为 null 
 
    2.timestamp
 
        insert into table (column1) values (#{aa,jdbcType=TIMESTAMP})
 
语句执行的sql:
 
       insert into table (column1)  values (to_ timestamp('08/27/2015 20:20:20.000', 'mm/dd/yyyy hh24:mi:ss.ff3'))
 
实际插入到数据库的结果:
 
2015/08/27 20:20:20
  --带有时分秒的
 
 
二  直接用to_date() / to_timestamp()函数
    前提:这两个函数不能用于java里的Date类型,只能用于String类型,即aa 的数据类型只能是String
    mybatis在处理to_date函数时(to_timestamp()同理) 
        #{aa} 没有指定jdbctype, 则根据java数据类型给出一个jdbctype,  但如果 aa为null 或 "" 则出报错
        #{aa,jdbcType=DATE} ,指定jdbctype后,会转换为相应的jdbctype,但如果类型不匹配,则报错. 如果 aa为null 或 ""  则aa 取值为null
        
     PS: java.util.Date aa  mybatis默认给出的jdbctype=TIMESTAMP  即:#{aa} 等价于 #{aa,jdbcType=TIMESTAMP}
 
    1. to_date()
    
    sql1:     insert into table (column1) values (to_date(#{aa},'YYYY-MM-DD'))
    sql2:    insert into table (column1) values (to_date(#{aa},'YYYY-MM-DD hh24:mi:ss'))
 
    执行的sql语句:
    sql1:    insert into table (column1) values (to_date('2015-09-08 20:20:20','YYYY-MM-DD'))
    sql2:     insert into table (column1) values (to_date('2015-09-08 20:20:20','YYYY-MM-DD hh24:mi:ss'))
 
    执行结果:
    sql1:    报错:  日期格式图片在转换整个输入字符串之前结束    转换类型不匹配
    sql2:    column1 : 2015-09-08 20:20:20
 
    2. to_timestamp()
    sql3:     insert into table (column1) values (to_timestamp(#{aa},'YYYY-MM-DD'))
    sql4:    insert into table (column1) values (to_timestamp(#{aa},'YYYY-MM-DD hh24:mi:ss'))
 
    执行的sql语句:
    sql3:    insert into table (column1) values (to_timestamp('2015-09-08 20:20:20','YYYY-MM-DD'))
    sql4:     insert into table (column1) values (to_timestamp('2015-09-08 20:20:20','YYYY-MM-DD hh24:mi:ss'))
 
    执行结果:
    sql3:    报错:  日期格式图片在转换整个输入字符串之前结束    转换类型不匹配
    sql4:    column1 :   08-9月 -15 08.20.20.000000000 下午   //timestamp 带有更多的时间信息
 
三  直接取值
    没有jdbctype  没有to_date函数  column1的类型为date
     sql5:     insert into table (column1) values (#{aa})    //aa的java 数据类型为String 
    sql6:     insert into table (column1) values (#{aa})    //aa的java 数据类型为 java.util.Date
    执行的sql语句:
    sql5:    insert into table (column1) values ('2015-09-08 20:20:20')
  sql6:    insert into table (column1) values (to_timestamp('09/08/2015 15:14:38.000','mm/dd/yyyy hh24:mi:ss.ff3'))
    执行结果:
    sql5:    报错:  文字与格式字符串不匹配    转换类型不匹配
    sql4:    column1 :   2015/8/27 20:20:20  

mybatis 关于时间的问题与技巧的更多相关文章

  1. mybatis按时间条件搜索

    dto接受前台字符串时间格式 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date contractStartDt; @Date ...

  2. mybatis的时间比较 xml 及不解析<=的写法

    <if test="type ==1"> and DATE_FORMAT(create_date,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y ...

  3. 保持ssh连接长时间不断开的技巧

    我经常用ssh连接服务器,过段时间不用, 需要恢复一下断开的连接, 原因是NAT防火墙喜欢对空闲的会话进行超时处理,以确保它们状态表的干净和内存的低占用率,因为 长时间保持连接, 会长期占用部分系统资 ...

  4. SpringMVC+MyBatis 返回时间格式转换的解决方案

    Spring MVC 4.X ResponseBody 日期类型Json 处理 摘自http://tramp-zzy.iteye.com/blog/2090330  2014-07-10 方法一:全局 ...

  5. MyBatis中时间格式的映射问题

    简单地说,就是Java的Date类可以直接映射到Mysql的TIMESTAMP或者是DATETIME(按道理应该是映射成DATE的) 具体的看这两篇博客吧: 1. MySql中TIMESTAMP和DA ...

  6. mybatis操作mysql的奇淫技巧总结(代码库)

    1.添加公共sql代码段 使用<sql> 和 <include> 标签 <sql id="userSubassemblyRecordParam"> ...

  7. sql isdate判断时间函数(小技巧)

    isdate 是一个判断字符串是否为日期的函数,0代表所传入的字符串不是日期,1代表传入的参数是日期. select   isdate('30/12/2014')  ---0 第一个是 mdy --如 ...

  8. MyBatis按时间排序

    测试代码 ActivityReadExample readExample = new ActivityReadExample(); readExample.setOrderByClause(" ...

  9. MyBatis使用技巧、总结、注意事项

    目录 1.mybatis的官方文档地址 2.其他技巧: 2.1 如何在代码中拼接 like %% 2.2 数据库比较时日期的错误操作 2.2.1 异常情况: 2.2.2 为什么会在后面指定jdbcTy ...

随机推荐

  1. Extjs的架构设计思考,单页面应用 or 多页面?

    写在前面:不要认为 EXTJS 高版本就是一个界面改良,在项目中,仍然用 N 张页面,在 N 张页面部署 EXTJS .这种方式不用多讲,效率问题大家都看得出来, EXTJS 是一个集成开发工具,注定 ...

  2. greenDAO简介

    了解android开发的人应该都会知道,android的数据库开发主要用到sqlite.greenDAO应该算是当前最火的数据库开源框架了吧,它是一个移动开发的ORM(object / relatio ...

  3. android中广播的使用

    广播消息机制用于进行系统级别的消息通知,每个应用程序可以对感兴趣的广播进行注册,并且将接收广播的方法定义在广播接收器中(Broadcast). 广播可以分为标准广播和有序广播. 注册广播的方法可以动态 ...

  4. php+socket模拟表单发送请求

    <?php /** * http请求类(php + socket) * @todo 这里还有很多未完善的地方,仅有简单的get post head请求 * @author chuangrain@ ...

  5. 推荐几个web中常用js图表插件

    作者:zccst 我自己用过fusioncharts和highchart. jQuery插件有: TufteGraph flot js charts jqchart elycharts jquery ...

  6. linux下源码编译安装mysql

    1.安装依赖的包: yum install -y gdb cmake ncurses-devel bison bison-devel 2.创建mysql安装目录和数据文件目录 mkdir -p /us ...

  7. svn无法提交

    svn无法提交, 错误信息:Commit failed. svn: E200007: CHECKOUT can only be performed on a version resource... 解 ...

  8. IOS9中联系人对象的使用及增删改查操作的函数封装

    之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...

  9. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载)

    原文:http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker  192.168.224.20:22122 ...

  10. python中numpy对函数进行矢量化转换

    在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环. 但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换. def Theta(x ...