Oracle SQL - 日期和空值之间的月份

问题描述 投票:0回答:1

我目前正在尝试在 Oracle SQL 中获取两个日期之间的月数,但是当结束日期为 null 时,它会出现 null,如果 select 语句中的结束日期为 null,有没有办法使用今天的日期?

我已经尝试过months_ Between语句,但我不确定如何处理空值。 如果结束日期为空,我希望“从开始起的月份”来计算,就好像今天一样 我当前在 select 语句中的代码是 - trunc(months_ Between(START_DATE,END_DATE)) as "Months From Start"

Current outcome in Picture

我的期望是“从开始起的月份”列将返回-4

oracle-sqldeveloper
1个回答
0
投票

使用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>
© www.soinside.com 2019 - 2024. All rights reserved.