2010-03-08 52 views

回答

3

鑑於此數據...

SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss' 
    2/

Session altered. 

SQL> select * from t23 
    2/

MY_TIMESTAMP 
-------------------- 
08-mar-2010 13:06:02 
08-mar-2010 13:06:08 
13-mar-1985 13:06:26 

SQL> 

..它僅僅是轉換成the time elapsed since 01-JAN-1970秒鐘的事:

SQL> select my_timestamp 
    2  , (my_timestamp - date '1970-01-01') * 86400 as unix_ts 
    3 from t23 
    4/

MY_TIMESTAMP   UNIX_TS 
-------------------- ---------- 
08-mar-2010 13:06:02 1268053562 
08-mar-2010 13:06:08 1268053568 
13-mar-1985 13:06:26 479567186 

SQL> 
1

我相信這是:

select to_char(my_timestamp, 'dd-mm-yyyy') as my_new_timestamp from table 

this reference查看Oracle的日期格式說明。

2

據我所知,Unix時間戳被定義爲由於1970-01-01秒數,在這種情況下:

select DATE '1970-01-01' + my_timestamp/86400 from table; 

(有86400秒一天)

要忽略小時,分鐘和秒:

select TRUNC(DATE '1970-01-01' + my_timestamp/86400) from table; 

但是,如果你想要的是那麼「截短的」 Unix時間戳試試這個:

select floor(my_timestamp/84600)*84600 from dual; 
+0

我的問題是:在這之後它需要一個UNIX時間戳不是Oracle日期;) – opHASnoNAME 2010-03-08 13:15:52

+0

看到我更新的答案 – 2010-03-08 14:39:53