添加日期间隔无法处理结束
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 实现它的方式
我对 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 实现它的方式