日付および時刻の算術は、次の構文でサポートされています。
INTERVAL型は、完結した式の最終結果には使用できません。この時間隔の結果から必要な要素を抽出するには、EXTRACT関数を使う必要があります。
次の表に、各演算結果のデータ型を示します。
SELECT DATE1 - DATE2 FROM t1 SELECT EXTRACT(DAY FROM TIMESTAMP1-TIMESTAMP2) FROM t1 SELECT * FROM t1 WHERE TIMESTAMP1 -TIMESTAMP2 = NUMTODSINTERVAL(10, 'DAY'); SELECT SYSDATE + NUMTODSINTERVAL(20,'SECOND') FROM dual; SELECT EXTRACT (SECOND FROM TIMESTAMP1-TIMESTAMP2) FROM dual; /* select the microsecond difference between two timestamp values d1 and d2 */ SELECT 1000000*(EXTRACT(DAY FROM d1-d2)*24*3600+ EXTRACT(HOUR FROM d1-d2)*3600+ EXTRACT(MINUTE FROM d1-d2)*60+EXTRACT(SECOND FROM d1-d2)) FROM d1;
次の問合せでは、エラーが戻されます。
結果がINTERVALとなるSELECT文は実行できません。 SELECT TIMESTAMP1 -TIMESTAMP2 FROM t1;INTERVAL YEAR TO MONTHとINTERVAL DAY TO SECONDは比較できません。
SELECT * FROM t1 WHERE TIMESTAMP1 -TIMESTAMP2 = NUMTOYMINTERVAL(10, 'YEAR');INTERVAL DAY TO SECONDとINTERVAL DAYは比較できません。
SELECT * FROM t1 WHERE TIMESTAMP1 -TIMESTAMP2 = INTERVAL '10' DAY;INTERVAL DAY TO SECONDからYEARを抽出することはできません。
SELECT EXTRACT (YEAR FROM TIMESTAMP1-TIMESTAMP2) FROM dual;
日時および時間隔の算術を実行する場合、次の制限を考慮する必要があります。