この例では、EXPAND ON句でMONTH_BEGINおよびMONTH_ENDを使用する方法を示します。
まず、以下のようにttimestampテーブルを作成します。
CREATE SET TABLE ttimestamp ( id INTEGER, quantity INTEGER, pd PERIOD(TIMESTAMP(0))) PRIMARY INDEX (id);
ttimestampテーブルには以下の行が含まれます。
id | Quantity | pd |
---|---|---|
11 | 110 | 2005-02-01 01:10:40, 2005-06-20 05:20:50 |
10 | 100 | 2004-01-03 01:10:40, 2004-05-31 20:20:50 |
MONTH_BEGINまたはMONTH_ENDを使用してEXPAND ON句を指定すると、拡張された行はすべて、その月のMONTH_BEGIN値またはMONTH_END値から始まり、拡張された各期間の粒度は1カ月になります。この例では、デフォルトのセッション タイムゾーンをINTERVAL '00:00' HOUR TO MINUTEに設定して、テーブル データが表示されます。
SET TIME ZONE INTERVAL ‘00:00’ HOUR TO MINUTE;
次のSELECT文では、EXPAND ... BY MONTH_BEGINを指定します。
SELECT id, quantity, BEGIN(bg) FROM ttimestamp EXPAND ON pd AS bg BY ANCHOR MONTH_BEGIN;
各行は、各MONTH_BEGIN値のデフォルトのTIME定数値00:00:00+00:00で拡張されます。
id | qty | bg |
11 | 110 | 2005-03-01 00:00:00 |
11 | 110 | 2005-04-01 00:00:00 |
11 | 110 | 2005-05-01 00:00:00 |
11 | 110 | 2005-06-01 00:00:00 |
10 | 100 | 2004-02-01 00:00:00 |
10 | 100 | 2004-03-01 00:00:00 |
10 | 100 | 2004-04-01 00:00:00 |
10 | 100 | 2004-05-01 00:00:00 |
次のSELECT文では、EXPAND ... BY ANCHOR MONTH_ENDを指定しますが、そうでなければ、前の文と同じです。
SELECT id, quantity, BEGIN(bg) FROM ttimestamp EXPAND ON pd AS bg BY ANCHOR MONTH_END;
各行は、各月末のデフォルトのTIME定数値23:59:59+00:0で拡張されます。
id | Quantity | bg |
11 | 110 | 2005-02-28 23:59:59 |
11 | 110 | 2005-03-31 23:59:59 |
11 | 110 | 2005-04-30 23:59:59 |
11 | 110 | 2005-05-31 23:59:59 |
10 | 100 | 2004-01-31 23:59:59 |
10 | 100 | 2004-02-29 23:59:59 |
10 | 100 | 2004-03-31 23:59:59 |
10 | 100 | 2004-04-30 23:59:59 |