转自https://blog.csdn.net/m0_37190495/article/details/84299633
date和timestamp
date
DATE数据类型的问题在于它表示两个事件发生时间间隔的度量粒度是秒。
timestamp
ORACLE已经在DATE数据类型上扩展出来了TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。如果你想把 DATE类型转换成TIMESTAMP类型,就使用CAST函数。
SQL> SELECT CAST(date1 AS TIMESTAMP) "Date" FROM t;
date和timestamp 的区别
- date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。
- 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> 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还有更多的操作,可以自行寻找资料,这里就不赘述了