我最近在处理一些SQL查询,我不得不将这些值分成几个月(例如12月,1月,2月......)并进行一些比较。然而,我不知道在每个月的结束日使用什么。所以我想知道当你定义一个技术上不存在的日期时会发生什么。例如。
WHERE myDate BETWEEN '2016-01-01' AND '2016-02-31' //note Feb 31 does not exist.
我的假设(基于我当前的查询似乎返回正确的结果)是它只是忽略了不存在的额外日期(例如,在计算日期时,它只是没有日期以外的常规日期范围)。
这种未定义的行为是否会在将来遇到麻烦?或者有更好的方法来覆盖所有基础吗?
答案 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.