2011-03-29 137 views
2

我正在將代碼從Sybase更改爲Oracle。 我在將以下查詢轉換爲oracle時遇到問題。Sybase中的Sybase等效

Select Custodian_addr,convert(datetime,dateadd(ss,CreateDT,"01/01/1970") 

這裏CreateDT是列名,其例如價值1015015173 日期轉換(在這個例子中)的結果是2002年3月1日下午8時39 GMT

我研究後發現一個Oracle替代從而導致錯誤

Select Custodian_addr,to_char(CreateDT,"SS") 

我在Oracle中遇到查詢錯誤,我無法識別出什麼錯誤。因爲我在Perl中執行此操作["]必須逃脫或可能是什麼問題?請給我一個解決方案

回答

1
SELECT 'some address' as custodian_addr, 
    date '1970-01-01' + 1015015173/86400 as create_dt 
from dual 
/

CUSTODIAN_AD CREATE_DT 
------------ ------------------- 
some address 2002-03-01 20:39:33 

Oracle日期算法非常簡單 - 將日期加1加1天。因此,由於該數字是秒,因此除以86400(60 * 60 * 24)將該數字表示爲天數(及其分數)。

+0

@ Peter.Is有沒有使用to_char的替代方案。 – user682571 2011-03-29 18:14:11

+0

@peter 1015015173 ----這可以設置爲列名稱日期'1970-01-01'+ field_name/864000)...將這項工作.. ?? – user682571 2011-03-29 18:22:17

+0

是的 - 我只是用你的價值爲例。 – 2011-03-29 18:44:56

0

你得到的錯誤是什麼?

您的TO_CHAR函數不應該使用雙引號。它需要是

TO_CHAR(CreateDT,'SS') 

如果你在Oracle中使用雙引號,它會被解釋爲標識符,而不是字符串常量。