HCOSS での datetime の演算

datetime 値に対して実行できる算術演算は、加算と減算のみです。

加算演算子

datetime 値が加算の作用対象である場合、もう一方の作用対象はラベル付き期間でなければなりません。

HCOSS での加算演算子を使用した datetime 値の演算に関する固有のルールは次のとおりです。

最初の作用対象の型 もう一方の作用対象
date date の年、月、または日のラベル付き期間。
time time の時間、分、または秒のラベル付き期間。
timestamp date、time、または timestamp のラベル付き期間。いずれの型のラベル付き期間も有効です。

HCOSS での datetime の加算の結果は、常に date、time、または timestamp になります。

注: date、time、または timestamp の期間を使用して date、time、または timestamp の列を増分することはできません。代わりに、上記の対応するラベル付き期間を使用してください。

減算演算子

HCOSS での減算演算子を使用した datetime 値の演算では、加算の場合とは異なるルールが適用されます。期間から datetime 値を減算することはできず、また 2 つの datetime 値で減算を行う場合と datetime 値から期間を減算する場合で演算が異なるためです。

減算演算子を使用した datetime 値の演算に関する一般的なルールは次のとおりです。

Operand1 - Operand2 結果
date - date date の期間 - decimal(8.0) 形式の「yyyymmdd」
date - date のラベル付き期間 date
time - time time の期間 - decimal(6.0) 形式の「hhmmss」
time - time のラベル付き期間 time
timestamp - timestamp timestamp の期間 - decimal(20,6) 形式の「yyyymmddhhmmss.nnnnnn」
timestamp - 任意のラベル付き期間 timestamp
HCOSS での date の減算に関する固有の追加ルール:
  • 最初の作用対象が date の場合、2 番目の作用対象は年、月、日のラベル付き期間か DATE(date または date の文字列表現) 式でなければなりません。
  • 2 番目の作用対象が date の場合、最初の作用対象は DATE(date または date の文字列表現) 式でなければなりません。
  • いずれかの作用対象が CURRENT_DATE の場合、もう一方の作用対象に DATE 関数は必要ありません。
HCOSS での time の減算に関する固有の追加ルール:
  • 最初の作用対象が time の場合、2 番目の作用対象は時間、分、秒のラベル付き期間か TIME(time または time の文字列表現) 式でなければなりません。
  • 2 番目の作用対象が time の場合、最初の作用対象は TIME(time または time の文字列表現) 式でなければなりません。
  • いずれかの作用対象が CURRENT_TIME の場合、もう一方の作用対象に TIME 関数は必要ありません。
HCOSS での timestamp の減算に関する固有の追加ルール:
  • 最初の作用対象が timestamp の場合、2 番目の作用対象は任意の有効なラベル付き期間か TIMESTAMP(timestamp または timestamp の文字列表現) 式でなければなりません。
  • 2 番目の作用対象が timestamp の場合、最初の作用対象は TIMESTAMP(timestamp または timestamp の文字列表現) 式でなければなりません。
  • いずれかの作用対象が CURRENT_TIMESTAMP の場合、もう一方の作用対象に TIMESTAMP 関数は必要ありません。
  • TIMESTAMP の精度は、SQL Server の datetime2(6) データ型と同じに設定されます。
注: date、time、または timestamp の期間を使用して date、time、または timestamp の列を減分することはできません。代わりに、対応するラベル付き期間を使用してください。ただし、HCOSS では、式 (CURRENT_TIMESTAMP - CURRENT_TIMEZONE) という 1 つの特殊なケースをサポートしています。

有効な z/OS DB2 の式 必要な HCOSS の式
COL_TS - COL_TS COL_TS - TIMESTAMP(COL_TS)
COL_DT - '1900-01-01' COL_DT - DATE('1900-01-01')
'12.12.12' - COL_TM TIME('12.12.12') - TIME(COL_TM)
許容される HCOSS の式
CURRENT_TIMESTAMP - COL_TS
CURRENT_DATE - '1900-01-01'
COL_TM - CURRENT_TIME
CURRENT_TIMESTAMP - CURRENT_TIMEZONE