日付/時刻のオペランドと期間

日付/時刻の値に対して、増分や減分、および減算を行うことができます。これらの演算では、期間 と呼ばれる 10 進数を使用することができます。この期間 は、時間間隔を表す正または負の数値です。

期間には、以下の 4 つのタイプがあります。

ラベル付き期間
ラベル付き期間の形式は、以下のとおりです。

labeled-duration:

構文図を読む構文図をスキップする
>>-+-function-----+--+-YEAR---------+--------------------------><
   +-(expression)-+  +-YEARS--------+   
   +-constant-----+  +-MONTH--------+   
   +-column-name--+  +-MONTHS-------+   
   '-variable-----'  +-DAY----------+   
                     +-DAYS---------+   
                     +-HOUR---------+   
                     +-HOURS--------+   
                     +-MINUTE-------+   
                     +-MINUTES------+   
                     +-SECOND-------+   
                     +-SECONDS------+   
                     +-MICROSECOND--+   
                     '-MICROSECONDS-'   

ラベル付き期間 (labeled-duration) は、特定の時間単位を表すもので、数値 (式の結果でも可) の後に 7 つの期間キーワード YEARS、MONTHS、 DAYS、HOURS、MINUTES、SECONDS、または MICROSECONDS のうちの 1 つを付けたものです。1指定した値は、DECIMAL(15,0) の数値へ割り当てられる場合と同様に変換されます。ただし、DECIMAL(27,12) を使用する SECONDS は別で、ここには 0 から 12 桁までの小数秒を組み込むことができます。 MICROSECONDS 期間は、6 桁の小数秒を戻します。

ラベル付き期間は、算術演算子のオペランドの一方がデータ・タイプとして DATE、TIME、または TIMESTAMP を持つ値である場合にのみ、もう一方のオペランドとして使用することができます。 したがって、HIREDATE + 2 MONTHS + 14 DAYS という式は有効ですが、HIREDATE + (2 MONTHS + 14 DAYS) という式は無効です。 この 2 つの式で、2 MONTHS および 14 DAYS がラベル付き期間です。

日付期間
日付期間 は、DECIMAL(8,0) の数値として表現される年数、月数、および日数を表します。 この数値が正しく解釈されるためには、yyyymmdd という形式にする必要があります (yyyy は年数、mm は月数、dd は日数を表します)。 ある日付の値から別の日付の値を引いた結果 (例えば、式 HIREDATE - BRTHDATE の結果) は、日付期間になります。
時刻期間
時刻期間 は、DECIMAL(6,0) の数値として表現される時間数、分数、および秒数を表します。 この数値が正しく解釈されるためには、hhmmss という形式にする必要があります。hh は時間数、mm は分数、ss は秒数を表します。ある時刻の値から別の時刻の値を引いた結果は、時刻期間になります。
タイム・スタンプ期間
タイム・スタンプ期間 は、DECIMAL(14+s,s) の数値として表現され (s は小数秒の桁数で、0 から 12 の範囲)、年数、月数、日数、時間数、分数、秒数、および小数秒数を表します。 この数値が正しく解釈されるためには、yyyymmddhhmmss.zzzzzzzzzzzz という形式になっていなければなりません (yyyy、mm、dd、hh、mm、ss、zzzzzzzzzzzz は、年数、月数、日数、時間数、分数、秒数、小数秒数にそれぞれ相当します)。 1 つのタイム・スタンプ値を別のタイム・スタンプ値から引いた結果は、タイム・スタンプ・オペランドの最大タイム・スタンプ精度に一致する位取りを持つタイム・スタンプ期間となります。
1 これらのキーワードは、単数形 (YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、および MICROSECOND) で指定しても構いません。