Oracle 如何获得上个月的相同日期?

Oracle 如何获得上个月的相同日期?,oracle,plsql,Oracle,Plsql,我所尝试的: 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. 我可以提取返回的日期,将其与原始日期进行比较,并在需要时减少,但有

我所尝试的:

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.

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

您发布的代码实际上并没有实现您所描述的功能

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>

你的输入日期是什么?它是
29.03.2021
?它是
29.04.2021。
我只是在小提琴上运行了你的代码,它工作正常,只是在for循环中将1改为I@AnkitBajpai这不是唯一的改变-你也改变了它,从一个固定的开始日期减去几个月,而不是一个月一个月地迭代更新一个变量。公平地说,这不是最初的代码。不应该是这样的,@William。我的想法是发布一些能产生“预期结果”的东西。我指的是“你发布的代码实际上并不符合你所描述的。”但这是不公平的,因为问题中的代码确实符合OP所描述的。哈哈哈!正确的!这是有道理的:)