Oracleto_date、to_timestamp、to_char、to_number⽤法
转载请标明出处:
原⽂⾸发于:
本⽂出⾃
厚颜打⼴告,博主个⼈博客地址,欢迎来访
bigdecimal转换为integer在说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还有更多的操作,可以⾃⾏寻资料,这⾥就不赘述了。
附录
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.URL[color=red][/color]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。