转载请标明出处:
原文首发于:
http://www.zhangruibin.com
本文出自
RebornChang的博客
厚颜打广告,博主个人博客地址传送门 ,欢迎来访
在说to_char,to_date,to_timestamp这些内置函数之前,首先要对数据库日期类型有所认识:
date和timestamp
date
DATE数据类型的问题在于它表示两个事件发生时间间隔的度量粒度是秒。
timpstamp
ORACLE已经在DATE数据类型上扩展出来了TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。如果你想把 DATE类型转换成TIMESTAMP类型,就使用CAST函数。
SQL> SELECT CAST(date1 AS TIMESTAMP) "Date" FROM t;
date和timestamp 的区别
1.date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。
2.timestamp是DATE类型的扩展,可以精确到小数秒(fractional_seconds_precision),可以是0 to9,缺省是6。两个timestamp相减的话,不能直接的得到天数,而是得到,多少天,多少小时,多少秒等。
date和timestamp之间的相互转换
to_char来转换timestamp——>date:
select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual;
date ——>timestamp:
select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual;
timestamp(n),n=0-9
在创建数据库的时候我们经常看到,timestamp(3)这样的列格式,那么timestamp这个参数3是什么意思呢,有没有其他的参数可选?接下来就稍微说下:
众所周知,常见时间单位有:世纪,年,月,周,日,时,分,秒(说光年的去二次元玩),那么比秒还小的时间计量单位是什么呢?毫秒(ms),微秒(us),纳秒(ns),皮秒(ps),飞秒(fs)。 最小的是一飞秒,是10的负15次方秒,即千万亿分之一秒,光在真空中,一飞秒仅走0.3微米。
说上面那些跟timestamp有什么关联?那就说下关联:timestamp(3)在数据库中的存储类比2015-07-28 12:46:45:759,分别是:年-月-日 时:分:秒:毫秒;那前面是参数是6,精度为微秒。参数为9,精度为纳秒。
ps:传说oracle数据库的timestamp的存储精度为6位,即微秒级,所以纳秒级的存储母鸡啦,有兴趣的可以将存储过程解密下看看…
在数据库取按照指定的精度取值的话,sql如下:
SQL> select
2 to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss:ff3') t_3,
3 to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss:ff6') t_6,
4 to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss:ff9') t_9
5 from dual;
T_3:2016-07-28 12:46:45:759
T_6:2016-07-28 12:46:45:759492
T_9:2016-07-28 12:46:45:759492000
to_char()
数据库中日期到sql结果集操作
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual;
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual ;
to_date()
sql中的字符到数据库中的日期的操作
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual ;
具体的用法,参考TO_CHAR
to_timestamp()
sql中的字符到数据库中的时间戳的操作
select to_timestamp('2016-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual;
to_number()
数据库中数字类型字符串到sql结果集转化为number类型的操作
To_number(varchar2 or char,’format model’)
具体的to_number还有更多的操作,可以自行寻找资料,这里就不赘述了。
附录
mybatis常用的jdbcType类型,摘自网络:http://ysj5125094.iteye.com/blog/2185024/
MyBatis 通过包含的jdbcType类型
BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED
TINYINT REAL VARCHAR BINARY BLOB NVARCHAR
SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR
INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB
BIGINT DECIMAL TIME NULL CURSOR
Mybatis中javaType和jdbcType对应和CRUD例子
<resultMap type="java.util.Map" id="resultjcm">
<result property="FLD_NUMBER" column="FLD_NUMBER" javaType="double" jdbcType="NUMERIC"/>
<result property="FLD_VARCHAR" column="FLD_VARCHAR" javaType="string" jdbcType="VARCHAR"/>
<result property="FLD_DATE" column="FLD_DATE" javaType="java.sql.Date" jdbcType="DATE"/>
<result property="FLD_INTEGER" column="FLD_INTEGER" javaType="int" jdbcType="INTEGER"/>
<result property="FLD_DOUBLE" column="FLD_DOUBLE" javaType="double" jdbcType="DOUBLE"/>
<result property="FLD_LONG" column="FLD_LONG" javaType="long" jdbcType="INTEGER"/>
<result property="FLD_CHAR" column="FLD_CHAR" javaType="string" jdbcType="CHAR"/>
<result property="FLD_BLOB" column="FLD_BLOB" javaType="[B" jdbcType="BLOB" />
<result property="FLD_CLOB" column="FLD_CLOB" javaType="string" jdbcType="CLOB"/>
<result property="FLD_FLOAT" column="FLD_FLOAT" javaType="float" jdbcType="FLOAT"/>
<result property="FLD_TIMESTAMP" column="FLD_TIMESTAMP" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP"/>
</resultMap>
Mybatis中javaType和jdbcType对应关系
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26441.html