DB2环境下SQL如何使用日期函数获取当月第一天与最后一天
DB2 日期过滤逻辑实现方案
你使用的
DATEADD、DATEDIFF为SQL Server专属日期函数,DB2不支持该语法,因此会出现执行报错。
核心日期函数实现
- 当月第一天(两种兼容写法)
高版本(DB2 9.7+)推荐写法:DATE_TRUNC('MONTH', CURRENT DATE)
全版本兼容写法:CURRENT DATE - (DAY(CURRENT DATE) - 1) DAYS - 当月最后一天(两种兼容写法)
高版本推荐写法:LAST_DAY(CURRENT DATE)
全版本兼容写法:DATE_TRUNC('MONTH', CURRENT DATE) + 1 MONTH - 1 DAY
最终过滤条件SQL
-- 当月第一天过滤 L2.FOM >= DATE_TRUNC('MONTH', CURRENT DATE) -- 当月最后一天过滤 L2.TOM <= LAST_DAY(CURRENT DATE)
注意事项
如果FOM、TOM字段为TIMESTAMP时间戳类型,为避免漏掉当月最后一天的时分秒数据,可以将最后一天的判断修改为更严谨的写法:
L2.TOM < DATE_TRUNC('MONTH', CURRENT DATE) + 1 MONTH
内容的提问来源于stack exchange,提问作者Tick _Tack
相关产品推荐
相关产品推荐

