interval_expressionの定義は、以下の3つの形式で表わすことができます。
- interval_term
- interval_expression + interval_term
- (date_time_expression - date_time_term) start TO end
この例では、2番目の定義を使用しています。
SELECT (CAST(INTERVAL '125' MONTH AS INTERVAL YEAR(2) TO MONTH)) + INTERVAL '12' YEAR;
interval_expressionはINTERVAL '125' MONTHです。
interval_termはINTERVAL '12' YEARです。
処理の段階は、以下のようになります。
- CAST関数が、125ヶ月のinterval_expressionの値を10年と5ヶ月に変換します。
- 12年のinterval_termの値がinterval_expressionの値に加算され、22年と5ヶ月という結果を生成します。
- 結果が適切なデータ型であるINTERVAL YEAR(2) TO MONTHに変換され、'22-05'の結果を生成します。
この例では、interval_expressionの3番目の定義を使用しています。
date_time_expressionの値とdate_time_termの値が比較可能であるようにしなければなりません。
SELECT (TIME '23:59:59.99' - CURRENT_TIME(2)) HOUR(2) TO SECOND(2);
date_time_expressionはTIME '23:59:59.99'です。
date_termは、date_time_primary - CURRENT_TIME(2)です。
処理の段階は、以下のようになります。
- 現在のシステム時刻を18:35:37.83と仮定します。
- HOUR(2) TO SECOND(2)の時間間隔18:35:37.83がTIMEの値23:59:59.99から減算され、'5:24:22.16'の結果を生成します。
ここではinterval_expressionの3番目の定義を使用して、2つのTIMESTAMP値の分単位での差分を確かめる別の例を示します。まずテーブルを定義します。
CREATE TABLE BillDateTime (start_time TIMESTAMP(0) ,end_time TIMESTAMP(0));
次に、分単位の差を判別します。
SELECT (end_time - start_time) MINUTE(4) FROM BillDateTime;
処理の段階は、以下のようになります。
- start_time TIMESTAMP値がend_time TIMESTAMP値から減算されて間隔結果を生じます。
- MINUTE(4)は4桁の精度の分単位の間隔を指定します。この場合、最大9999分(約1週間)を指定できます。