16.20 - FROM句(ANSI二重テンポラル テーブル形式) - Teradata Vantage NewSQL Engine

Teradata Vantage™ ANSIテンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1186-162K-JPN

二重テンポラル テーブルは、ANSI System-Timeテーブルの問合わせに記載されているように、システム時間に対する修飾子のみをサポートしています。

valid-time期間で二重テンポラル テーブルの行を修飾するには、WHERE句の条件内で非テンポラルSQLを使用します。SQLは、valid-time派生期間列の開始境界および終了境界である列を個別に参照できます。また、valid-time派生期間列にTeradata DatabaseのPeriodデータ型関数を直接適用することもできます。Periodデータ型関数の詳細については、<SQL関数、演算子、式および述部>を参照してください。

FROM句の例

ここに示す例では、次の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