2.12.1 時刻演算の形式と規則
- 〈この項の構成〉
(1) 機能
SQL中に時刻演算を指定すれば,時刻,又は時間隔データの演算を使用した検索・更新ができます。
時刻同士の減算,時刻に対する時間隔の加減算,時間隔同士の加減算,及び時間隔に対する整数の乗除算ができます。
(2) 演算できるデータ
時刻データ,又は時間隔データと時刻演算ができる値を次の表に示します。
演算の種類 |
時刻演算できる値 |
|
---|---|---|
時刻データ |
時間隔データ |
|
加算 |
|
|
減算 |
|
|
乗算,除算 |
指定できません。 |
|
単項演算 |
時刻データ,及びラベル付き間隔には,指定できません。 |
(3) ラベル付き間隔
ラベル付き間隔は,時刻演算をする場合に,数値とそれに続く間隔キーワードで特定の時間単位を表します。ラベル付き間隔は,時刻データに対する時間隔データの加減算の第2演算項にだけ指定できます。
(5) 説明
-
値式に指定できるものを次に示します。
-
整数定数
-
列指定
-
コンポネント指定
-
SQL変数,又はSQLパラメタ
-
四則演算
-
集合関数
-
スカラ関数
-
CASE式
-
CAST指定
-
関数呼出し
-
スカラ副問合せ
-
-
値式のデータ型は,整数(SMALLINT,INTEGER)にしてください。
-
HOUR〔S〕,MINUTE〔S〕,SECOND〔S〕は,それぞれ時間,分,秒の単位を表し,語尾のSは指定してもしなくてもかまいません。指定例を次に示します。
(例)
1時間:1 HOUR
23分:23 MINUTES
100秒:100 SECONDS
-
値式に指定できる値の範囲を次に示します。
HOUR〔S〕:−23〜23
MINUTE〔S〕:−1439〜1439
SECOND〔S〕:−86399〜86399
(6) 時刻演算の形式と結果のデータ型
時刻演算の形式と結果のデータ型の関係を次の表に示します。
演算の形式 |
結果のデータ型 |
---|---|
時刻データ − 時刻データ |
時間隔データ型 |
時刻データ{+|−}{時間隔データ|ラベル付き間隔} |
時刻データ型 |
時間隔データ + 時刻データ |
時刻データ型 |
時間隔データ{+|−}時間隔データ |
時間隔データ型 |
時間隔データ{*|/}整数データ |
時間隔データ型 |
- 注
-
時刻データ,又は時間隔データとの日付演算には,埋込み変数,標識変数,及び?パラメタは指定できません。
(7) 時刻演算の規則
時刻演算をする場合は,次に示す規則,及び「値式,値指定,及び項目指定」の共通規則に従います。
(a) 時刻データ同士を減算する場合の規則
-
結果のデータ型は,時,分,秒を表す時間隔データ型になります。
-
時刻1又は時刻2の秒が60秒以上の場合,演算する前に59秒に修正されます。
-
演算式を(時刻1−時刻2)としたときの結果は,次の規則に従い計算します。
- 時刻1≧時刻2の場合
-
結果=時刻1−時刻2
- 時刻1<時刻2の場合
-
結果=−(時刻2−時刻1)
- 時刻1の秒≧時刻2の秒の場合
-
結果の秒=時刻1の秒−時刻2の秒
- 時刻1の秒<時刻2の秒の場合
-
結果の秒=時刻1の秒−時刻2の秒+60
時刻2の分=時刻2の分+1
- 時刻1の分≧時刻2の分の場合
-
結果の分=時刻1の分−時刻2の分
- 時刻1の分<時刻2の分の場合
-
結果の分=時刻1の分−時刻2の分+60
時刻2の時=時刻2の時+1
- 結果の時=時刻1の時−時刻2の時
-
- (例)TIME('13:10:15')-TIME('11:50:59')の減算結果を求める場合
-
(b) 計算手順の説明
(8) 時刻データと時間隔データとを加減算する場合の規則
-
結果のデータ型は,時刻データ型になります。
-
演算の結果の範囲は,0時0分0秒〜23時59分59秒の間にしてください。
-
時間隔データ(ラベル付き間隔以外)の場合,時,分,秒の順に演算します。
-
うるう秒を含む時刻データの場合,演算結果は次のようになります。
-
秒が60秒以上の場合,演算する前に59秒に修正されます。
(例)
'12:34:60' + 1 MINUTEの演算結果は'12:35:59'
'12:34:60' + 1 SECONDの演算結果は'12:35:00'
-
演算結果には,うるう秒を含みません。
-
(9) 時間隔データ同士の加減算及び時間隔データの整数データによる乗除算の場合の規則
-
結果のデータ型は,時間隔データ型になります。
-
演算結果の範囲は,−99時間59分59秒間〜99時間59分59秒間にしてください。
-
分,秒が60を超える場合は,それぞれ時,分にけた上げをします。
-
除算は,時,分,秒を秒に通算した形に変換し,結果の小数点以下は切り捨てられます。
(10) 留意事項
次に示す時刻演算の規則で,オーバフローエラー抑止が設定されている場合は,エラーになりません。
-
時刻データ型のオーバフロー
-
時間隔データ型のオーバフロー
-
ラベル付き間隔のオーバフロー
なお,オーバフローエラー抑止が設定されている場合の演算結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。