DB2数据库如何获取当前月份的第一天与最后一天日期
DB2获取当月首末日及动态日期重叠判断实现
获取当前月份第一天
直接通过日期偏移计算即可,逻辑为当前日期减去「当日在月内的天数减1」的天数偏移,就能回到当月1号:
-- 返回值示例:当前日期为2022-06-29时,返回2022-06-01 CURRENT DATE - (DAY(CURRENT DATE) - 1) DAYS
获取当前月份最后一天
有两种常用写法:
- 直接使用DB2内置的
LAST_DAY()函数,传入日期即可返回对应月份的最后一天,写法最简洁:-- 返回值示例:当前日期为2022-06-29时,返回2022-06-30 LAST_DAY(CURRENT DATE) - 若使用的DB2版本不支持
LAST_DAY(),可以通过日期偏移计算:先取当月第一天,加1个月到下月第一天,再减1天即为当月最后一天:CURRENT DATE - (DAY(CURRENT DATE) - 1) DAYS + 1 MONTH - 1 DAY
动态当月区间的重叠判断写法
把原有硬编码的固定日期替换成上面的动态日期表达式即可,修正原语句缺失的左括号后完整写法如下:
(cast(JOB.FOMDATE as DATE), cast(JOB.TOMDATE as DATE)) OVERLAPS ( cast((CURRENT DATE - (DAY(CURRENT DATE) - 1) DAYS) as DATE), cast(LAST_DAY(CURRENT DATE) as DATE) )
注意:OVERLAPS判断区间时默认遵循左闭右开规则,如果需要包含最后一天的全天数据,可根据业务需求将最后一天的日期加1天调整边界。
内容的提问来源于stack exchange,提问作者Tick _Tack
相关产品推荐
相关产品推荐

