日期不存在的 SQL 查询



我最近在做一些SQL查询,我必须将值分成不同的月份(例如12月,1月,2月......)并进行一些比较。然而,我不知所措,想知道每个月的最后一天该用什么。所以我想知道当你定义一个技术上不存在的日期时会发生什么。例如。

WHERE myDate BETWEEN '2016-01-01' AND '2016-02-31' //note Feb 31 does not exist.

我的假设(基于我当前的查询似乎返回了正确的结果)是它只是忽略了不存在的额外日期(例如,在计算日期时,它根本没有常规日期之外的范围的日期)。

这种未定义的行为是我将来可能会遇到麻烦吗?或者有没有更好的方法来做到这一点来覆盖所有基础?

为什么不想使用 LAST_DAY() 函数:

SELECT SYSDATE, trunc(LAST_DAY(SYSDATE)) last, 
   LAST_DAY(SYSDATE) - SYSDATE days_left FROM DUAL;

输出:

SYSDATE           LAST               DAYS_LEFT
----------------- ----------------- ----------
03.02.16 18:38:26 29.02.16 00:00:00         26
1 row selected.

最新更新