我正在尝试按今天的月份和之前的 6 个月过滤查询。我希望将该查询放在计划中,以便它每月运行一次。这应该使实际和之前的 6 每个月都会发生变化。我正在使用 db2。
现在我的 where 子句中有这样的东西(对于 6 个月前): (date>= 时间戳 ('2012-07-01-00.00.00.00') 和 date<= 时间戳 ('2013-1-1-00.00.00.00'))
有没有办法获取今天月份第一天和前 6 个月的时间戳?
谢谢
这有点笨拙,但你可以做这样的事情。DB2 实际上没有一个好的机制来声明存储进程之外的变量。我也添加了LAST_DAY
位,只是为了方便/参考。
WITH
THIS_MONTH(FIRST_DAY, LAST_DAY) AS (
SELECT TIMESTAMP_ISO(
CURRENT_DATE - (DAY(CURRENT_DATE) - 1) DAYS
),
TIMESTAMP_ISO(
CURRENT_DATE - (DAY(CURRENT_DATE) - 1) DAYS
) + 1 MONTH - 1 MICROSECOND
FROM SYSIBM.SYSDUMMY1
),
SIX_MONTHS_AGO(FIRST_DAY, LAST_DAY) AS (
SELECT FIRST_DAY - 6 MONTHS,
(FIRST_DAY - 6 MONTHS) + 1 MONTH - 1 MICROSECOND
FROM THIS_MONTH
)
SELECT *
FROM YOUR_TABLE
WHERE UPDATE_TIMESTAMP BETWEEN
(SELECT FIRST_DAY FROM SIX_MONTHS_AGO)
AND
(SELECT FIRST_DAY FROM THIS_MONTH)