2017-09-15 22 views
0

我在比較日期時遇到問題。我想比較我的表上的end_time列與一些平均算術值,對於許多行。在oracle中每個月的比較日期

when PPLP_NAME='OCS_PPL_IMP_OFFER_STATE' then 
    CASE WHEN (to_char(END_TIME, 'DD/MM/YYYY HH24:MI:SS')<= '011100') 
    THEN 100 ELSE 0 END 
END 
AS STATUS, 

例如,我想比較的END_TIME用於上述PPLP_NAME低於或等於每月01日上午11點。

下面的查詢不會執行請求。

你能幫我一下嗎?

謝謝你。

+0

因爲'TO_CHAR'刪除了MySQL的標籤是Oracle的一項功能。如果這是不正確的,請編輯正確的標籤(而不是標記多個RDBMS)。 – MT0

+0

正確,謝謝MT0 7! –

回答

1

不要使用字符串比較來比較日期 - 只是比較日期:

我想比較END_TIME爲上述PPLP_NAME低於或等於每個月的01日上午11點。

然後,你需要看到日期是否小於或等於日期TRUNC與添加到它11小時重複的信號月初:

WHEN PPLP_NAME='OCS_PPL_IMP_OFFER_STATE' then 
    CASE 
    WHEN END_TIME <= TRUNC(END_TIME, 'MM') + INTERVAL '11' HOUR 
    THEN 100 
    ELSE 0 
    END 
END AS STATUS,