Inputs | Output |
DECIMAL(p1,s1) - DECIMAL(p2,s2) | DECIMAL(p3,s3), with p3 the larger precision of the inputs, and s3 the larger scale of the inputs. |
DECIMAL(p1,s1) - NUMERIC(p2,s2) | |
NUMERIC - NUMERIC | NUMERIC |
DECIMAL(p,s) - not-DECIMAL-or-NUMERIC | DECIMAL(p,s) |
NUMERIC - not-DECIMAL-or-NUMERIC | NUMERIC |
Inputs | Output |
DATE - INTERVAL | DATE. Only days, months, and years can be subtracted from a DATE. |
INTERVAL - INTERVAL | INTERVAL |
INTERVAL - DATE | DATE. Dates can be subtracted from INTERVALs only if the INTERVAL is days, months, or years. |
INTERVAL - TIME | TIME |
INTERVAL - TIMESTAMP | TIMESTAMP |
Operand1 | Operand2 | Output |
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 | An INTERVAL day: the number of days between the two arguments. DATE '2006-03-20' - DATE '2005-12-02' = INTERVAL '108' DAY(3) |
DATE | TIMESTAMP STRING | An INTEGER that represents the difference between the dates in the two inputs. |
TIME | TIME | An INTERVAL hour to second. TIME '21:00:00' - TIME '19:00:00' = INTERVAL '0 2:00:00' DAY TO SECOND |
TIMESTAMP | TIMESTAMP | An INTERVAL day to second. 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 | An INTEGER that represents the difference between the dates in the two inputs. |
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 |