SQL查询,日期不存在

时间:2016-02-03 17:20:34

标签: oracle date

我最近在处理一些SQL查询,我不得不将这些值分成几个月(例如12月,1月,2月......)并进行一些比较。然而,我不知道在每个月的结束日使用什么。所以我想知道当你定义一个技术上不存在的日期时会发生什么。例如。

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

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

这种未定义的行为是否会在将来遇到麻烦?或者有更好的方法来覆盖所有基础吗?

1 个答案:

答案 0 :(得分:1)

为什么不想使用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.