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. Android高斯模糊技术,实现毛玻璃效果(转)

    本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235930&idx=1&sn=e328 ...

  2. 关于安装Windows Live Writer后,内存被占满情况解决

    为了方便写博客,昨天安装了Windows Live Writer2012,但是出现了在安装好后还是正常的,第二天一开机就出现了内存被占满的情况,在资源监视器里看了下也没发现有什么问题.想还是重启一下, ...

  3. Ubuntu 12.04下PHP环境的搭建(LAMP)

    1.首先打开命令行,切换到root身份,获得最新的软件包 su root sudo apt-get install update 2.安装MySQL数据库 sudo apt-get install m ...

  4. github上forck一个分支之后,如何和主分支同步

    github forck一个分之后,如果过一段时间就会和主分支的差异比较大. 这样提交pr的时候 就会冲突,这个时候我们就需要和主分支同步代码 git remote add upstream git@ ...

  5. linux学习小记:如何查看linux服务器的cpu数量,内核数,和cpu线程数

    查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 查看每个cpu核心数量 grep 'core id' /proc/cpuinf ...

  6. jquery为某div下的所有textbox的赋值

    html代码 <input type="button" value="变量div_Alltext中的变量" onclick="Do_DivAll ...

  7. UVa 10226 - Hardwood Species

    题目大意:给出n棵树(有重复),统计每种树出现的频率.使用STL的map. #include <cstdio> #include <iostream> #include < ...

  8. Oracle数据库用户权限和管理员权限

    一.如何查看权限 查看用户权限 1. oracle用户查看自己的权限和角色     select * from user_tab_privs;     select * from user_role_ ...

  9. OSG开发概览(转载)

    OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对open ...

  10. JDBC oracle 错误总结

    ORA-28040: No matching authentication protocol jdk:1.8 oracle:12c 使用ojdbc14.jar 报错:ORA-28040: No mat ...