Teradataでは、PERIODデータ型のデータ型 レベルでのテンポラル テーブル サポートを提供しています。PERIODとは固定期間のことであり、期間内で連続する時間単位を表現します。PERIODには、開始境界値(開始要素の値で定義)と、終了境界値(終了要素の値で定義)があります。開始要素と終了要素は、DATE、TIME、またはTIMESTAMPの、どのタイプにすることもできますが、両方を同じタイプにする必要があります。
PERIODで表現する期間は、開始境界値から始まり、終了境界値まで続きます。ただし、終了境界値は含みません。
要素型がDATEまたはTIMESTAMPの場合、終了境界値にはUNTIL_CHANGEDという特別な値を指定できます。この値をTeradata Databaseは、PERIODの終了境界値が永久(つまり、無期限)であると解釈します。
Policyテーブルにテンポラル テーブル サポートを追加する最初の手順として、保険会社のアプリケーションでは、各行がいつ有効かを記録するためのPERIOD(DATE)列を含むPolicyテーブルを作成します。
CREATE TABLE Policy( Policy_ID INTEGER, Customer_ID INTEGER, Policy_Type CHAR(2) NOT NULL, Policy_Details CHAR(40), Validity PERIOD(DATE) ) PRIMARY INDEX(Policy_ID);
このPolicyテーブルは非テンポラル テーブルですが、アプリケーションではTeradata DatabaseがPERIODタイプに提供する組込みのサポートを使用できます。このサポートには、PERIODのコンストラクタ、リテラル、演算子、関数および述部が含まれます。
たとえば、テーブルに行を追加する場合、アプリケーションではPERIODのコンストラクタを使用してValidity列の値を指定します。
INSERT INTO Policy (Policy_ID, Customer_ID, Policy_Type, Policy_Details, Validity) VALUES (541008, 246824626, 'AU', 'STD-CH-345-NXY-00', PERIOD(DATE '2009-10-01', UNTIL_CHANGED));
特定の日付から有効になる行をPolicyテーブルから取得する場合、アプリケーションでは次に示すようにBEGIN関数を使用します。
SELECT * FROM Policy WHERE BEGIN(Validity) = DATE '2010-01-01';