添加日期间隔无法处理结束

Adding date intervals can’t handle going past the end

我对 Oracle 不是很熟悉,所以这一切对我来说都有点陌生。

如果我有一个简单的计算如下:

WITH dates AS (SELECT date '2020-01-31' AS jan31, date '2020-02-29' AS feb29 FROM dual)
SELECT
    jan31 + interval '1' month AS nextmonth,    --  29 Feb 2020
    feb29 + interval '1' year AS nextyear       --  28 Feb 2021
FROM dates;

两次计算都会失败,因为结果超出范围。

我在 PostgreSQL、MariaDB 和 Microsoft SQL Server 中尝试过相同的方法,使用它们自己的相应表达式,它们都得到注释日期;也就是说,他们将结果裁剪到月底而不是溢出。

我熟悉 add_months 函数,它确实进行了适当的调整,但我想知道是否有一种方法可以使表达式 date + interval 可靠地工作。

此处已回答:

基本上,这就是 Oracle 实现它的方式