mybatis 关于时间的问题与技巧
2017-09-20 00:00
477 查看
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'))
7fe0
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
此执行是在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'))
7fe0
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 关于时间的问题与技巧
- MyBatis关于返回时间的问题
- Spring+SpringMvc+MyBatis(Hibernate) 中关于时间格式的问题总结
- 关于Mybatis查询时间问题的考虑
- 关于mybatis中时间插入到数据库中的问题
- 关于cocos2dx-lua版本中游戏时间显示问题
- 关于算法的时间复杂度问题的思考
- java oracle 关于时间类型的问题
- 关于时间问题的经典处理方法
- python 中关于时间间隔问题
- 用mybatis查oracle,spring操纵mongodb插入数据时出现的时间类型问题
- C#关于DateTime得到的当前时间的格式问题
- 关于Oracle profile文件connect_time时间限制超时的问题探究
- 关于Mysql时间相减问题的bug
- 关于使用MyBatis-Generator时自定义注解生成器的一些问题
- mysql 关于查询时间的中工作中遇到的一些问题 有代表性的
- 一个时间转换的问题,顺便谈谈搜索技巧
- hds 用户管理关于用户有效起始时间和有效中止时间问题
- 关于Android中查看app安装时间等信息的问题
- 关于Json格式中时间格式转化问题