我的问题基本上是我想在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
答案 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