【转】ORACLE中时间类型date和timestamp的相互转化



来源:http://www.cnblogs.com/java-class/p/4742740.html

date和timestamp 的区别

     date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。例如:查看一下当前距离伦敦奥运会开幕还有多长时间:

1 select to_date('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual

结果是:92.2472685185185天,然后你根据相应的时间换算你想要的间隔就行!这个结果可能对程序员有用,对于想直接看到结果的人,这个数字还不是很直观,所以,就引出了timestamp类型

timestamp是DATE类型的扩展,可以精确到小数秒(fractional_seconds_precision),可以是0 to9,缺省是6。两个timestamp相减的话,不能直接的得到天数书,而是得到,
多少天,多少小时,多少秒等,例如:同样查看一下当前距离伦敦奥运会开幕还有多长时间.

1 select to_timestamp('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual

     结果是:+000000092 05:51:24.032000000,稍加截取,就可以得到92天5小时,51分钟,24秒,这样用户看起来比较直观一些!但是这个数字对程序员来说不是很直观了,如果想要具体的时间长度的话,并且精度不要求到毫秒的话,可以将timestamp类型转成date类型,然后直接相减即可。



查询当前系统时间,返回成date数据类型。你可以使用sysdate函数。

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
---------------------------------------------------------------------------
11-AUG-18 01.55.07.311630 PM +08:00


查询当前系统时间,返回成timestamp数据类型。你可以使用systimpstamp函数。

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
-------------------
2018-08-11 13:55:14



date和timestamp之间的相互转换可以通过

to_char来转换timestamp——>date:


SQL> select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
  2  ;

TO_DATE(TO_CHAR(SYS
-------------------
2018-08-11 13:56:27


date ——>timestamp:

SQL> select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
  2  ;

TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'),'YYYY-MM-DDHH24:MI:SS'
---------------------------------------------------------------------------
11-AUG-18 01.56.35.000000000 PM

SQL>

原文地址:https://www.cnblogs.com/fengaix6/p/9459632.html