SQL における日時の算術計算
日付/時刻値に関して実行できる算術演算は加算と減算だけです。
日付/時刻値が加算のオペランドである場合、他方のオペランドは期間でなければなりません。 日付/時刻の値を使う加算演算子を使用するときには、次のような特有の規則があります。
- 一方のオペランドが日付の場合、もう一方のオペランドは 日付期間、あるいは年、月、または日のラベル付き期間でなければなりません。
- 一方のオペランドが時刻の場合、もう一方のオペランドは、 時刻期間、あるいは時、分、または秒のラベル付き期間でなければなりません。
- 一方のオペランドがタイム・スタンプである場合、もう一方のオペランドは期間でなければなりません。 この場合、期間のどのタイプでも有効です。
- 加算演算子のどちらのオペランドにも、パラメーター・マーカーは使用できません。 パラメータマーカーに関する説明は、PREPARE文のパラメータマーカー を参照してください。
日付/時刻の値に減算演算子を使用する際の規則は、加算演算子の場合とは異なります。 これは、日付/時刻の値を期間から引くことができないため、さらに 2 つの日付/時刻の値を差し引くことと期間を日付/時刻の値から差し引くこととは異なるためです。 日付/時刻の値を使う減算演算子を使用するときには、次のような特有の規則があります。
- 第 1 オペランドが日付の場合、第 2 オペランドは、日付、 日付期間、日付のストリング表現、または年、月、日のラベル付き 期間でなければなりません。
- 第 2 オペランドが日付の場合、第 1 オペランドは、日付または日付のストリング表記であることが必要です。
- 第 1 オペランドが時刻の場合、第 2 オペランドは、時刻、 時刻期間、時刻のストリング表現、または時、分、秒のラベル付き 期間でなければなりません。
- 第 2 オペランドが時刻の場合、第 1 オペランドは、時刻または時刻のストリング表記であることが必要です。
第 1 オペランドがタイム・スタンプの場合、第 2 オペランドは、
タイム・スタンプ、タイム・スタンプのストリング表現、または期間でなければなりません。 第 2 オペランドは、タイム・スタンプのストリング表現である場合、第 1 オペランドと同じ精度のタイム・スタンプに暗黙的に変換されます。
第 2 オペランドがタイム・スタンプの場合、第 1 オペランドは、
タイム・スタンプまたはタイム・スタンプのストリング表現でなければなりません。 第 1 オペランドは、タイム・スタンプのストリング表現である場合、第 2 オペランドと同じ精度のタイム・スタンプに暗黙的に変換されます。
- 減算演算子のどちらのオペランドにも、パラメーター・マーカーは使用できません。
日時式のオペランドがストリングの場合、それが解釈されて日時値に変換される前に、文字変換されることがあります。 その CCSID が混合ストリング用のデフォルトの CCSID ではない 場合、混合ストリングはデフォルトの混合データ表現に変換されます。 その CCSID が SBCS ストリング用のデフォルトの CCSID ではない 場合、SBCS ストリングはデフォルトの SBCS 表現に変換されます。