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所描述的。哈哈哈!正确的!这是有道理的:)