Transformaciones CAST implícitas para operaciones aritméticas

Este tema lista las transformaciones CAST implícitas disponibles para operaciones aritméticas.

Normalmente los operadores aritméticos (+, -, * y /) operan en operandos del mismo tipo de datos y devuelven un valor del mismo tipo de datos que los operandos. Los casos en que es aceptable que los operandos tengan tipos de datos diferentes, o en que el tipo de datos del valor resultante es diferente del tipo de los operandos, se muestran en la tabla siguiente.

La tabla siguiente lista las transformaciones CAST implícitas para operaciones aritméticas.
Tipo de datos de operando izquierdo Tipo de datos de operando derecho Operadores soportados Tipo de datos de resultado
INTEGER FLOAT +, -, *, / FLOAT1
INTEGER DECIMAL +, -, *, / DECIMAL1
INTEGER INTERVAL * INTERVAL4
FLOAT INTEGER +, -, *, / FLOAT1
FLOAT DECIMAL +, -, *, / FLOAT1
FLOAT INTERVAL * INTERVAL4
DECIMAL INTEGER +, -, *, / DECIMAL1
DECIMAL FLOAT +, -, *, / FLOAT1
DECIMAL INTERVAL * INTERVAL4
TIME TIME - INTERVAL2
TIME GMTTIME - INTERVAL2
TIME INTERVAL +, - TIME3
GMTTIME TIME - INTERVAL2
GMTTIME GMTTIME - INTERVAL2
GMTTIME INTERVAL +, - GMTTIME3
DATE DATE - INTERVAL2
DATE INTERVAL +, - DATE3
TIMESTAMP TIMESTAMP - INTERVAL2
TIMESTAMP GMTTIMESTAMP - INTERVAL2
TIMESTAMP INTERVAL +, - TIMESTAMP3
GMTTIMESTAMP TIMESTAMP - INTERVAL2
GMTTIMESTAMP GMTTIMESTAMP - INTERVAL2
GMTTIMESTAMP INTERVAL +, - GMTTIMESTAMP3
INTERVAL INTEGER *, / INTERVAL4
INTERVAL FLOAT *, / INTERVAL4
INTERVAL DECIMAL *, / INTERVAL4
INTERVAL TIME + TIME3
INTERVAL GMTTIME + GMTTIME3
INTERVAL DATE + DATE3
INTERVAL TIMESTAMP + TIMESTAMP3
INTERVAL GMTTIMESTAMP + GMTTIMESTAMP3
Notes:
  1. En el operando que no coincide con el tipo de datos del resultado se efectúa una transformación CAST al tipo de datos del resultado antes de continuar con la operación. Por ejemplo, si el operando izquierdo para un operador de suma es INTEGER, y el operando derecho es FLOAT, se efectúa una transformación CAST del operando izquierdo a FLOAT antes de realizar la operación de suma.
  2. Restar un valor (GMT)TIME de un valor (GMT)TIME, un valor DATE de un valor DATE, o un valor (GMT)TIMESTAMP de un valor (GMT)TIMESTAMP, da como resultado un valor INTERVAL que representa el intervalo de tiempo entre los dos operandos.
  3. Sumar o restar un INTERVAL de un valor (GMT)TIME, DATE o (GMT)TIMESTAMP da como resultado un valor nuevo del tipo de datos del operando que no es INTERVAL, que representa el punto en el tiempo representado por el valor no INTERVAL original más o menos el período de tiempo representado por el INTERVAL.
  4. Multiplicar o dividir un valor INTERVAL por un valor INTEGER, FLOAT o DECIMAL da como resultado un nuevo valor INTERVAL que representa el período de tiempo representado por el original, multiplicado o dividido por el factor representado por el operando que no es INTERVAL. Por ejemplo, un valor INTERVAL de 2 horas y 16 minutos multiplicado por un valor FLOAT de 2,5 da como resultado un nuevo valor INTERVAL de 5 horas 40 minutos. Los cálculos intermedios implicados en multiplicar o dividir el INTERVAL se llevan a cabo en el tipo de datos del valor no INTERVAL, pero los campos individuales del valor INTERVAL (como HOUR, YEAR, etcétera) son siempre integrales, por lo que se pueden producir algunos errores de redondeo.

Conceptos relacionados
ESQL

Tareas relacionadas
Desarrollo de ESQL

Referencia relacionada
Funciones ESQL complejas
Transformaciones CAST implícitas
Transformaciones CAST implícitas para comparaciones
Transformaciones CAST implícitas para asignación