Oracle to_date、to_timestamp、to_char、to_number 用法

转自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 的区别

  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> 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还有更多的操作,可以自行寻找资料,这里就不赘述了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值