添加日期间隔无法处理超过末尾的情况



我对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 DB Ora-01839:日期对于指定的月份无效。29-02-2016闰年

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

相关内容

  • 没有找到相关文章

最新更新