1. 程式人生 > >Oracle中date和timestamp之間的轉換

Oracle中date和timestamp之間的轉換

前幾天,gf的專案中用到了timestamp型別欄位,轉換了幾次,都報錯,今天有時間,就把date與timestamp型別的轉換做以測試,總結如下:

一、首先說下date和timestamp的不同吧。

大家知道,date型別能夠儲存月,年,日,世紀,時,分和秒,而經常的格式為'MM/DD/YYYY HH24:MI:SS'或者'MM-DD-YYYY HH24:MM:SS'。

可以看到,date只能精確到秒,不能看到秒之內的時間,一般的時間計算足夠,但是對時間間隔等要求比較高的計算等date就有點力不從心了。

那麼為了解決date型別粒度不夠的問題,ORACLE擴展出了timestamp時間戳型別,timestamp型別引入了小數秒的資訊。

二、得到系統的date時間和timestamp時間

1、得到系統時間,返回成date型別,可如下:

SQL>SELECT SYSDATE FROM DUAL;

2、得到系統時間,返回成timestamp型別,可如下:

SQL> SELECT SYSTIMESTAMP FROM DUAL;
三、date型別和timestamp型別之間的轉換

1、date--》timestamp,示例如下:

SQL>select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
2、timestamp --》date,示例如下:
SQL>select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
或者使用CAST函式進行轉換也行,示例如下:
 SQL> SELECT CAST(date1 AS TIMESTAMP) "Date" FROM t; 
同理,date到timestamp,也可利用CAST函式進行轉換。