MOnths之间在oracle中,当日期大于每月10

时间:2014-03-14 18:53:27

标签: oracle oracle11g

我的问题基本上是我想在ORACLE中使用 MONTHS_BETWEEN 逐个增加一个月 当日期大于每月10个时,我的查询是:

CASE
    when 
        TRUNC( months_between(TO_DATE(K.RECORD_DATE,'DD/MM/YYYY'),TO_DATE(K.DUE_DATE,'DD/MM/YYYY')) ) <= 0 then 0
    when
       --to_number(to_char(K.RECORD_DATE,'dd')) >10
       TO_NUMBER(TO_CHAR( TO_DATE(k.RECORD_DATE,'DD/MM/YYYY'),'DD')) > 10 

        then     
        TRUNC( months_between(K.RECORD_DATE,K.DUE_DATE) )+1
        else
            TRUNC( months_between(K.RECORD_DATE,K.DUE_DATE) )
    end as mths
FROM 
TBL_PAYMENT_DTL K  

2 个答案:

答案 0 :(得分:0)

to_date()中使用months_between()

select 
CASE
    when 
        TRUNC( months_between(TO_DATE(K.RECORD_DATE,'DD/MM/YYYY'),TO_DATE(K.DUE_DATE,'DD/MM/YYYY')) ) <= 0 then 0
    when
       --to_number(to_char(K.RECORD_DATE,'dd')) >10
       TO_NUMBER(TO_CHAR( TO_DATE(k.RECORD_DATE,'DD/MM/YYYY'),'DD')) > 10 

        then     
        TRUNC( months_between(TO_DATE(k.RECORD_DATE,'DD/MM/YYYY'),TO_DATE(k.DUE_DATE,'DD/MM/YYYY')) )+1
        else
            TRUNC( months_between(TO_DATE(k.RECORD_DATE,'DD/MM/YYYY'),TO_DATE(k.DUE_DATE,'DD/MM/YYYY')) )
    end as mths
FROM 
TBL_PAYMENT_DTL K 

答案 1 :(得分:0)

您可以使用EXTRACT功能获取日期的一部分,如下所示:

SELECT
CASE
    when 
        extract(day from K.RECORD_DATE) > 10 then K.RECORD_DATE
    else
       add_months(K.RECORD_DATE, 1) 
    end as mths
from 
TBL_PAYMENT_DTL K