2015-01-06 81 views
-1

我收到'Missing Expression'錯誤。你看到問題了嗎?這可能是愚蠢的。Oracle SQL - DateDiff問題

SELECT CASE WHEN a.CODE = 'CONTACT_CLIENT' THEN (@DATEDIFF('DD',a.LASTMODIFIED,w.DATE_OPEN)) END AS "MET" 
    FROM WORKORD w 
    INNER JOIN WORKDET wd on wd.TTNUM = w.SEQ_ID 
    INNER JOIN ACTIONS a on a.SEQ_ID = wd.ACTION 
+0

問題是,這不是Oracle的語法。 –

+0

[計算Oracle SQL中2個日期/時間之間的差異]的可能重複(http://stackoverflow.com/questions/1096853/calculate-difference-between-2-date-times-in-oracle-sql) – Allan

回答

1

問題是@DATEDIFF不是Oracle中的函數。嘗試trunc(a.LASTMODIFIED - w.DATE_OPEN)

3

您是否在引用Oracle GoldenGate的@DATEDIFF轉換函數?

這將不是工作在Oracle RDBMS。在那裏,你將不得不使用操作:

a.LASTMODIFIED - w.DATE_OPEN 

結果將在分數天。如果您只需要天的天數,那麼您將不得不解決結果。贈送:

SELECT CASE WHEN a.CODE = 'CONTACT_CLIENT' THEN 
       TRUNC(a.LASTMODIFIED - w.DATE_OPEN) 
     END AS "MET" 
... 

一個簡單的介紹瞭如何使用Oracle日期算術見http://www.dba-oracle.com/t_date_arithmetic.htm

4

datediff在Oracle中不是一個函數。您也不會在@符號前添加一個函數名稱。

假設a.lastModifiedw.date_open都是date類型,您可以簡單地減去它們以獲得以天爲單位的差異。

CASE WHEN a.CODE = 'CONTACT_CLIENT' 
    THEN a.lastModified - w.date_open 
END 

如果你想天的整數倍(因爲date值始終包括時間成分,減去兩個日期經常會導致天的非整數),扔在一個truncround取決於你想做什麼。

當然,我不知道爲什麼你不在你CASE聲明中有一個ELSE你或你爲什麼標識符用字(date_open)和標識符之間沒有下劃線下劃線(lastModified)。但這似乎並不是你問題的一部分。