0

今日の月とその前の 6 か月でクエリをフィルター処理しようとしています。月に 1 回実行されるように、そのクエリをスケジュールに入れたいと思います。これにより、月ごとに実際の値と 6 つ前の値が変化するはずです。私はdb2を使用しています。

今、where 句に次のようなものがあります (6 か月前): (date>= TIMESTAMP ('2012-07-01-00.00.00.00') and date<= TIMESTAMP ('2013-1-1-00.00) .00.00'))

今日の月初日と 6 か月前のタイムスタンプを取得する方法はありますか?

ありがとう

4

1 に答える 1

2

少し扱いに​​くいですが、このようなことができます。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)
于 2013-01-30T21:52:31.770 に答える