ヘッダーをスキップ
Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド
リリース6.0
B25770-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

算術演算における日時型および時間隔型

日付および時刻の算術は、次の構文でサポートされています。

DateVal1 - DateVal2: 日数の差を整数として戻します。
TimeVal1 - TimeVal2またはTimestampVal1 - TimestampVal2: 差をINTERVAL DAY TO SECONDで戻します。
DateTimeVal {+|-} IntervalValまたは
IntervalVal + DateTimeValまたは
IntervalVal1 {+|-} IntervalVal2または
IntervalVal {*|/} NumericValまたは
NumericVal * IntervalVal

INTERVAL型は、完結した式の最終結果には使用できません。この時間隔の結果から必要な要素を抽出するには、EXTRACT関数を使う必要があります。

次の表に、各演算結果のデータ型を示します。

オペランド1
演算子
オペランド2
結果のデータ型

TIME/TIMESTAMP

-

TIME/
TIMESTAMP

INTERVAL DAY TO SECOND

DATE

-

DATE

NUM OF DAYS

日時

+または-

INTERVAL

日時

INTERVAL

+

日時

日時

INTERVAL

+または-

INTERVAL

INTERVAL

INTERVAL

*または/

数値

INTERVAL

数値

*

INTERVAL

INTERVAL

例9.6
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; 
例9.7

次の問合せでは、エラーが戻されます。

結果が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;

日時および時間隔の算術演算の制限

日時および時間隔の算術を実行する場合、次の制限を考慮する必要があります。