ここに示す例では、次のANSI二重テンポラル テーブルを使用します。
eid ename deptno terms job_start job_end sys_start sys_end ---- ----- ------ ----- ---------- ---------- -------------------------------- -------------------------------- 1002 Ash 333 TA05 2003/01/01 2003/12/31 2003-12-01 12:11:00.000000-08:00 9999-12-31 23:59:59.999999+00:00 1005 Alice 222 TW10 2004/12/01 9999/12/31 2004-12-01 12:00:00.450000-08:00 9999-12-31 23:59:59.999999+00:00 1010 Mike 444 TW07 2015/01/01 2016/12/31 2004-12-01 00:12:23.120000-08:00 9999-12-31 23:59:59.999999+00:00 1001 Sania 111 TW08 2002/01/01 2006/12/31 2002-01-01 00:00:00.000000-08:00 2002-07-01 12:00:00.350000+00:00 1004 Fred 222 PW12 2001/05/01 9999/12/31 2001-05-01 12:00:00.350000-08:00 9999-12-31 23:59:59.999999+00:00 1003 SRK 111 TM02 2004/02/10 2005/02/10 2004-02-10 00:00:00.000000-08:00 2004-12-01 00:12:23.120000+00:00
例: ANSI二重テンポラル テーブルに対するsystem-timeのAS OF問合わせ
次のAS OF問合わせは、指定した時点にオープンしていたテーブルの行をすべて取得します。
SELECT * FROM employee_bitemp FOR SYSTEM_TIME AS OF TIMESTAMP'2003-12-02 00:00:01.000000-08:00'; eid ename deptno terms job_start job_end sys_start sys_end ---- ----- ------ ----- ---------- ---------- -------------------------------- -------------------------------- 1002 Ash 333 TA05 2003/01/01 2003/12/31 2003-12-01 12:11:00.000000-08:00 9999-12-31 23:59:59.999999+00:00 1004 Fred 222 PW12 2001/05/01 9999/12/31 2001-05-01 12:00:00.350000-08:00 9999-12-31 23:59:59.999999+00:00
例: ANSI二重テンポラル テーブルに対するsystem-timeのAS OF問合わせおよびvalid-timeのCurrent問合わせ
次の問合わせでは、valid-time条件を追加して前回の例の問合わせを修飾することにより、現在有効な情報が含まれている行のみを表示します(job_endが現在の日付以降)。
SELECT * FROM employee_bitemp FOR SYSTEM_TIME AS OF TIMESTAMP'2003-12-02 00:00:01.000000-08:00' WHERE job_end >= CURRENT_DATE; eid ename deptno terms job_start job_end sys_start sys_end ---- ----- ------ ----- ---------- ---------- -------------------------------- -------------------------------- 1004 Fred 222 PW12 2001/05/01 9999/12/31 2001-05-01 12:00:00.350000-08:00 9999-12-31 23:59:59.999999+00:00
また、次の問合わせを使用して同じ結果を返すこともできます。
SELECT *
FROM employee_bitemp
FOR SYSTEM_TIME AS OF TIMESTAMP'2003-12-02 00:00:01.000000-08:00'
WHERE END(job_dur) >= CURRENT_DATE;
例: ANSI二重テンポラル テーブルに対するsystem-timeのBETWEEN問合わせおよびvalid-timeの非テンポラル問合わせ
次の問合わせは、テーブルから削除されていたものの(sys_endがシステム タイムスタンプの最大値未満)、2006年の開始時点で有効であった(job_endが2006-01-01より後)行を選択します。
SELECT * FROM employee_bitemp FOR SYSTEM_TIME BETWEEN TIMESTAMP'1900-01-01 00:00:00.000000+00:00' AND CURRENT_TIMESTAMP WHERE SYS_END < TIMESTAMP'9999-12-31 23:59:59.999999+00:00' AND job_end > DATE'2006-01-01'; eid ename deptno terms job_start job_end sys_start sys_end ---- ----- ------ ----- ---------- ---------- -------------------------------- -------------------------------- 1001 Sania 111 TW08 2002/01/01 2006/12/31 2002-01-01 00:00:00.000000-08:00 2002-07-01 12:00:00.350000+00:00