リファレンスガイド> SQL演算子のTDVサポート> 算術演算子> 減算
 
減算
減算演算子(-)は、第1オペランドから第2オペランドを減算し、差を返します。
注:構成パラメーターを使用して、この演算子で精度/スケールが38を超えることができるかどうかを制御できます。詳細については、関数の10進数の制限を参照してください。 。
10進数および数値のデータタイプ
減算演算子がDECIMALまたはNUMERICデータタイプを含むオペランドに適用される場合、出力データタイプ、精度、およびスケールは、以下に示すように、オペランドのデータタイプ、精度、およびスケールに依存する場合があります。
構文
operand1 - operand2
備考
入力(オペランド)の順序は、出力データタイプには影響しません。
他のオペランドと組み合わせたDECIMALおよびNUMERICデータタイプの出力を表に示します。
入力
出力
DECIMAL(p1,s1)-DECIMAL(p2,s2)
DECIMAL(p3,s3)、p3は入力の精度が高く、s3は入力のスケールが大きくなります。
DECIMAL(p1,s1)-NUMERIC(p2,s2)
NUMERIC - NUMERIC
NUMERIC
DECIMAL(p,s)-not-DECIMAL-or-NUMERIC
DECIMAL(p,s)
NUMERIC-not-DECIMAL-または-NUMERIC
NUMERIC
DECIMAL(6,1) - DECIMAL(5,2) -> DECIMAL(6,2)
DECIMAL(6,1) - NUMERIC(5,2) -> DECIMAL(6,2)
NUMERIC(6,1) - NUMERIC(5,2) -> NUMERIC(6,2)
インターバルタイプ
INTERVALは、DATE、TIME、TIMESTAMP、または別のINTERVALから減算できます。
構文
operand1 - operand2
備考
INTERVALは、DATE、TIME、TIMESTAMP、または別のINTERVALから減算できます。
INTERVALの日、時間、分、または秒は、他のINTERVALの日、時間、分、または秒からのみ減算できます。INTERVALの年または月は、他のINTERVALの年または月からのみ減算できます。ユニットの2つのグループは互換性がありません。
月を減算する場合、TDVサーバーは月の日を切り捨てず、指定された月の日が無効な場合はエラーをスローする可能性があります。
入力(オペランド)の順序は、出力データタイプには影響しません。
減算オペランドとしてのINTERVALの出力を表に示します。
入力
出力
DATE-INTERVAL
DATE。 DATEから減算できるのは、日、月、および年のみです。
INTERVAL-INTERVAL
INTERVAL
INTERVAL-DATE
DATE。INTERVALが日、月、または年の場合にのみ、DATEをINTERVALから減算できます。
INTERVAL-TIME
TIME
INTERVAL-TIMESTAMP
TIMESTAMP
TIME '7:00:00' - INTERVAL '0 3:00:00' DAY TO SECOND = TIME '4:00:00'
INTERVAL '10000-11' YEAR(5) TO MONTH - INTERVAL '1' MONTH(1) = INTERVAL '10000-10'
  YEAR TO MONTH
DATE '1999-12-31' - INTERVAL '365' DAY(3) = DATE '1998-01-01'
混合データタイプ
減算演算子は、算術演算子を受け入れることができるデータタイプと同等またはキャスト可能なオペランドを含む、さまざまなデータタイプを持つオペランドに適用できます。
構文
operand1 - operand2
備考
オペランドのデータタイプと結果の出力データタイプを表に示します。
オペランド1
オペランド2
出力
TINYINT
TINYINT
INTEGER
SMALLINT
SMALLINT
INTEGER
INTEGER
BIGINT
BIGINT
TINYINT
SMALLINT
INTEGER
BIGINT
STRING
INTEGER
TINYINT
FLOAT
REAL
FLOAT
SMALLINT
INTEGER
BIGINT
TINYINT
SMALLINT
INTEGER
BIGINT
DECIMAL (p,s)
NUMERIC (p,s)
DECIMAL (p,s)
FLOAT
REAL
TINYINT
SMALLINT
INTEGER
BIGINT
FLOAT
FLOAT
REAL
FLOAT
REAL
FLOAT
DECIMAL (p,s)
REAL
DECIMAL (p,s)
NUMERIC (p,s)
DECIMAL
DECIMAL
NUMERIC
TINYINT
SMALLINT
INTEGER
BIGINT
STRING
DECIMAL
NUMERIC
FLOAT
REAL
DECIMAL
DECIMAL
NUMERIC
DECIMAL
NUMERIC
DECIMAL
DATE
DATE
INTERVAL日:2つの引数の間の日数
DATE '2006-03-20' - DATE '2005-12-02' = INTERVAL '108' DAY(3)
DATE
TIMESTAMP
STRING
2つの入力のDATEの差を表すINTEGER
TIME
TIME
時間から秒までのINTERVAL。
TIME '21:00:00' - TIME '19:00:00' = INTERVAL '0 2:00:00' DAY TO SECOND
TIMESTAMP
TIMESTAMP
1日から2秒までのINTERVAL。
TIMESTAMP '2006-03-20 21:00:00'-TIMESTAMP' 2005-12-02 19:00:00 '= INTERVAL' 108 02:00:00 'DAY(3)TO SECOND
TIMESTAMP
DATE
STRING
2つの入力のDATEの差を表すINTEGER
STRING
STRING
TINYINT
SMALLINT
INTEGER
BIGINT
NUMERIC
FLOAT
REAL
DECIMAL
DATE
TIMESTAMP
DECIMAL
INTEGER
INTEGER
INTEGER
INTEGER
DECIMAL
FLOAT
FLOAT
DECIMAL
INTEGER
INTEGER
NULL
TINYINT
SMALLINT
INTEGER
BIGINT
NUMERIC
FLOAT
REAL
DECIMAL
DATE
TIMESTAMP
STRING
NULL
NULL
TINYINT
SMALLINT
INTEGER
BIGINT
NUMERIC
FLOAT
REAL
DECIMAL
DATE
TIMESTAMP
STRING
NULL