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. DDR工作原理(转)

    源:DDR工作原理 DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”.DDR SDRAM在原有的SDRAM的基础上改进而来.也正因为如此,DDR能 ...

  2. UVA - 208 Firetruck(消防车)(并查集+回溯)

    题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...

  3. tornado 增加日志模块

    log类 #!/usr/bin/env python # -*- coding:utf-8 -*- import logging.handlers class Logger(logging.Logge ...

  4. STL中map用法

    Map是 STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于 这个特性,它完成有可能在我们处理一对一数据的 ...

  5. 横向滚动视图scroll-into-view不起作用

    横向视图scroll-into-view指定的id为hpink,但是效果图中显示的还是第1个view(未达到效果); 纵向视图scroll-into-view指定的id为yellowgreen,效果图 ...

  6. WCF不用证书实现验证(messageheader)

    上文WCF进阶:将消息正文Base64编码中介绍了实现自定义MessageInspector来记录消息和实现自定义Formatter来改写消息,本文介绍一下在WCF中使用SoapHeader进行验证的 ...

  7. IOS开发中长按的手势事件编程

    长按手势事件: 长按按钮1S后改变按钮颜色: // 长按事件 #import "ViewController.h" @interface ViewController (){ UI ...

  8. jdk8 之 java.time包AND DateUtils

    package com.jansh.comm.util; import java.time.Clock; import java.time.LocalDate; import java.time.Lo ...

  9. iOS 架构模式

    参考:http://www.cocoachina.com/ios/20160108/14916.html MVC , MVP , MVVM , VIPER

  10. prism silverlight

    转自  http://www.cnblogs.com/li-xiao/archive/2011/01/13/1934564.html   Prism简介 Prism是由微软Patterns & ...