我目前正在尝试在 Oracle SQL 中获取两个日期之间的月数,但是当结束日期为 null 时,它会出现 null,如果 select 语句中的结束日期为 null,有没有办法使用今天的日期?
我已经尝试过months_ Between语句,但我不确定如何处理空值。 如果结束日期为空,我希望“从开始起的月份”来计算,就好像今天一样 我当前在 select 语句中的代码是 - trunc(months_ Between(START_DATE,END_DATE)) as "Months From Start"
我的期望是“从开始起的月份”列将返回-4
使用NVL函数(或CASE,或DECODE,...无论您认为合适),例如
SQL> with test (event_start, event_end) as
2 (select date '2022-02-25', date '2022-02-25' from dual union all
3 select date '2022-02-25', date '2022-08-09' from dual union all
4 select date '2022-08-09', null from dual
5 )
6 select event_start, event_end,
7 round(months_between(nvl(event_end, trunc(sysdate)), event_start)) mon_bet
8 from test
9 order by 1
10 /
EVENT_STAR EVENT_END MON_BET
---------- ---------- ----------
25.02.2022 25.02.2022 0
25.02.2022 09.08.2022 5
09.08.2022 16
SQL>