首页 > 解决方案 > 如何获得上个月的相同日期?

问题描述

我试过的:

for i in 1..5 loop
  v_input_date := ADD_MONTHS(v_input_date, -1);
end loop;

结果:

29.03.2021.
28.02.2021.
31.01.2021.
31.12.2020.
30.11.2020.

预期成绩:

29.03.2021.
28.02.2021.
29.01.2021.
29.12.2020.
29.11.2020.

我可以提取返回的日期,将其与原始日期进行比较,并在需要时减少它,但有没有更好的方法来实现这一点?

标签: oracleplsql

解决方案


您发布的代码实际上并没有按照您的描述进行。

SQL> declare
  2    v_input_date date := date '2021-04-29';
  3  begin
  4    for i in 1 .. 5 loop
  5      dbms_output.put_line(add_months(v_input_date, -1 * i));
  6    end loop;
  7  end;
  8  /
29.03.2021
28.02.2021
29.01.2021
29.12.2020
29.11.2020

PL/SQL procedure successfully completed.

SQL>

推荐阅读