有几种方法可以在 Db2 SQL 查询中将上个月描述为日期范围。某些日期时间 SQL 函数在 Db2 for z/OS 上不可用,但即便如此,您仍然可以使用日期算术和 LAST_DAY() 函数。
上个月的第一天:LAST_DAY(CURRENT DATE - 2 MONTHS) + 1 DAY
上个月最后一天:LAST_DAY(CURRENT DATE - 1 MONTH)
本月的第一天:LAST_DAY(CURRENT DATE - 1 MONTH) + 1 DAY
包含-排除示例(首选方法):
SELECT ... WHERE someDateTimeColumn >= LAST_DAY(CURRENT DATE - 2 MONTHS) + 1 DAY
AND someDateTimeColumn < LAST_DAY(CURRENT DATE - 1 MONTH) + 1 DAY
Inclusive-inclusive 示例(调用DATE() 函数将阻止可能跳过某些符合条件的行的隐式类型转换):
SELECT ... WHERE someDateTimeColumn >= LAST_DAY(CURRENT DATE - 2 MONTHS) + 1 DAY
AND DATE(someDateTimeColumn) <= LAST_DAY(CURRENT DATE - 1 MONTH)
如果您在 Db2 中查询 LUW v11.1 或更高版本,还可以调用 THIS_MONTH() 函数来获取输入月份的第一天。
上个月的第一天:THIS_MONTH(CURRENT DATE - 1 MONTH)
本月的第一天:THIS_MONTH(CURRENT DATE)
包含-排除示例:
SELECT ... WHERE someDateTimeColumn >= THIS_MONTH(CURRENT DATE - 1 MONTH)
AND someDateTimeColumn < THIS_MONTH(CURRENT DATE)