2015-10-12 80 views
0

我想附加一個綁定變量(:年),我得到的錯誤爲「ORA-01840:輸入值不夠長的日期格式」。ORA-01840:使用綁定變量時輸入值不夠長日期格式

的SQL是

Select SUM(CASE WHEN (date_start<= to_date('01/01/'||:Year,'MM/DD/YYYY') and 
        (actual_termination_date is null or actual_termination_date > to_date('01/01/'||:Year,'MM/DD/YYYY'))) 
       THEN 1 ELSE 0 END) AS CJAN 
from PER_PERIODS_OF_SERVICE ppp 

我一直在使用TO_CHAR嘗試(:年),但沒有用的。
你可以請讓我知道是什麼造成的問題?

+0

什麼價值':Year'有哪些?這可能是問題所在。 –

+0

:年份可以有2015或2016年的值 我有其他案例陳述 CASE WHEN to_char(ppp.date_start,'yyyy')=:Year AND to_char(ppp.date_start,'MM')='01'THEN 1 ELSE 0 END This works fine – Kushal

回答

0

嗯,邏輯上似乎更簡單的表達是這樣的:

Select SUM(CASE WHEN extract(year from date_start) <= :Year and 
        (extract(year from actual_termination_date) >= :Year or 
         actual_termination_date is null 
        ) 
       THEN 1 ELSE 0 END) AS CJAN 
from PER_PERIODS_OF_SERVICE ppp 

也許這也將解決您的問題。

+0

Hi Gordon。謝謝,但我有很多這樣的案例陳述,我正在檢查每個月的開始。所以我需要以某種方式追加一年。因爲一年可以有2015年和2016年的價值 – Kushal

+0

如果你有不同的問題,那麼你應該問這個問題。這個問題似乎是一整年。 –

+0

我只需要知道如何動態地在我的12個病例報表中添加年份(每月一個)。或者是否有我採用的方法的解決方法 – Kushal

0

用它來獲得一年的第一天。

TRUNC(TO_DATE(:年, 'YYYY'), 'YYYY')