タイム・スタンプの算術演算
タイム・スタンプは、減算が行えるほかに、増やしたり減らしたりすることができます。
タイム・スタンプの減算
あるタイム・スタンプ (TS1) から別のタイム・スタンプ (TS2) を引いた結果は、その 2 つのタイム・スタンプの間にある年、月、日、時、分、秒および少数秒の数を示すタイム・スタンプ期間になります。 結果のデータ・タイプは DECIMAL(14+s,s) です。s は、TS1 と TS2 の最大タイム・スタンプ精度です。 TS1 が TS2 より大きいか、または両者が等しければ、TS1 から TS2 が引かれます。 TS1 が TS2 より小さい場合でも、TS2 から TS1 が引かれ、結果の符号が負になります。 以下の手順型の記述は、RESULT = TS1 - TS2 という演算に伴う各ステップを説明したものです。
SECOND (TS2,s) < = SECOND (TS1,s)
の場合、SECOND (RESULT, s) = SECOND (TS1,s)-SECOND (TS2,s)。
SECOND (TS2,s)> SECOND (TS1,s)
の場合、SECOND (RESULT, s) = 60 + SECOND (TS1,s)-SECOND (TS2,s,)
および MINUTE (TS2) は 1 ずつ増分されます。
タイム・スタンプの分の部分は、
時刻の減算規則で指定されたとおりに減算されます。
HOUR (TS2) < = HOUR (TS1)
の場合、HOUR (RESULT) = HOUR (TS1)-HOUR (TS2)。
HOUR (TS2)> HOUR (TS1)
の場合、HOUR (RESULT) = 24 + HOUR (TS1)-HOUR (TS2)
と DAY (TS2) は 1 ずつ増分されます。
タイム・スタンプの日付部分は、日付の減算規則の
で指定されたとおりに減算されます。
の場合、SECOND (RESULT, s) = SECOND (TS1,s)-SECOND (TS2,s)。
SECOND (TS2,s)> SECOND (TS1,s)
の場合、SECOND (RESULT, s) = 60 + SECOND (TS1,s)-SECOND (TS2,s,)
および MINUTE (TS2) は 1 ずつ増分されます。
タイム・スタンプの分の部分は、
時刻の減算規則で指定されたとおりに減算されます。
HOUR (TS2) < = HOUR (TS1)
の場合、HOUR (RESULT) = HOUR (TS1)-HOUR (TS2)。
HOUR (TS2)> HOUR (TS1)
の場合、HOUR (RESULT) = 24 + HOUR (TS1)-HOUR (TS2)
と DAY (TS2) は 1 ずつ増分されます。
タイム・スタンプの日付部分は、日付の減算規則の
で指定されたとおりに減算されます。
日付 (D1) をタイム・スタンプ (TS1) から減算した結果は、TIMESTAMP(D1) を TS1 から減算した結果と同じです。 同様に、あるタイム・スタンプ (TS1) を日付 (D2) から減算した結果は、TS1 を TIMESTAMP(D2) から減算した結果と同じです。
タイム・スタンプの増減
タイム・スタンプに期間を加えた結果や、タイム・スタンプから期間を引いた結果は、それ自身がタイム・スタンプになります。 結果タイム・スタンプの精度は、タイム・スタンプ・オペランドの精度に一致します。 時のオーバーフローまたはアンダーフローが、結果の日付部分に桁送りされることを除いて、以前の項で述べたとおりの日付および時刻の算術演算が行われます。この結果は、有効な日付の範囲内になければなりません。 小数秒のオーバーフローは秒に桁送りされます。 したがって、タイム・スタンプ TIMESTAMP1 からの期間 X (X は DECIMAL(14+s,s) の数値) の減算は、以下の式と同等です。
TIMESTAMP1 - YEAR(X) YEARS - MONTH(X) MONTHS - DAY(X) DAYS
- HOUR(X) HOURS - MINUTE(X) MINUTES
- SECOND(X,s) SECONDSゼロ以外の位取りの期間
、MICROSECOND または MICROSECONDS のラベル付き期間、または、値に小数秒が含まれる SECOND または SECONDS のラベル付き期間を減算する場合、その減算は、最大 12 桁の小数秒が含まれるタイム・スタンプ値であるかのように実行されます。 結果値は、タイム・スタンプ・オペランドのタイム・スタンプの精度を持つタイム・スタンプ値に割り当てられ、その結果として秒の小数部分の桁は切り捨てられます。