En este tema se listan las transformaciones CAST soportadas entre las diferentes combinaciones de tipos de datos.
No en todas las combinaciones de tipos de datos están soportadas las transformaciones CAST. A continuación se listan las transformación CAST soportadas junto con el efecto de las mismas.
Al efectuar transformaciones, puede haber una correlación uno a uno o muchos a uno entre el tipo de datos de origen y el tipo de datos de destino. Un ejemplo de correlación uno a uno es cuando el tipo de datos de origen es un solo entero y el tipo de datos de destino un solo flotante. Un ejemplo de correlación muchos a uno es cuando los datos de origen constan de tres enteros que se convierten a una sola fecha. Tabla 1 lista las transformaciones uno a uno soportadas. Tabla 2 lista las transformaciones muchos a uno soportadas.
Consulte Tipos de datos ESQL para obtener información acerca de la precisión, escala y calificador de intervalo.
Tipo de datos de origen | Tipo de datos de destino | Efecto |
---|---|---|
BIT | BIT | El resultado es el mismo que la entrada. |
BIT | BLOB | La matriz de bits se convierte en una matriz de bytes con un máximo de 263 elementos. Se genera un error si el origen no tiene una longitud adecuada para generar un BLOB (esto es, un múltiplo de 8). |
BIT | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal de serie de bits cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato B'bbbbbb' (donde b es 0 ó
1). Si especifica una cláusula CCSID o ENCODING, se presupone que la matriz de bits son caracteres en la codificación y CCSID especificados y su página de códigos se convierte al valor de retorno de caracteres. Si especifica solamente CCSID, se presupone una codificación de big endian. Si sólo especifica una codificación, se presupone un CCSID de 1208. Esta función genera errores de conversión si la página de códigos o la codificación se desconocen, los datos proporcionados no son un número integral de caracteres de la página de códigos o si los datos contienen caracteres que no son válidos en la página de códigos concreta. |
BIT | INTEGER | La matriz de bits tiene un máximo de 263 elementos y se convierte en un entero. Se genera un error si el origen no tiene la longitud correcta para coincidir con un entero. |
BLOB | BIT | La matriz de bytes se convierte en una matriz de bits con un máximo de 263 elementos. |
BLOB | BLOB | El resultado es el mismo que la entrada. |
BLOB | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal de serie de binario cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato X'hhhh' (donde h es cualquier carácter hexadecimal). Si especifica una cláusula CCSID o ENCODING, se presupone que la matriz de bits son caracteres en la codificación y CCSID especificados y su página de códigos se convierte al valor de retorno de caracteres. Si especifica solamente CCSID, se presupone una codificación de big endian. Si sólo especifica una codificación, se presupone un CCSID de 1208. Esta función genera errores de conversión si la página de códigos o la codificación se desconocen, los datos proporcionados no son un número integral de caracteres de la página de códigos o si los datos contienen caracteres que no son válidos en la página de códigos concreta. |
BLOB | INTEGER | La matriz de bytes tiene un máximo de 263 elementos y se convierte en un entero. Se genera un error si el origen no tiene la longitud correcta para coincidir con un entero. |
BOOLEAN | BOOLEAN | El resultado es el mismo que la entrada. |
BOOLEAN | CHARACTER | Si el valor de origen es TRUE, el resultado es la serie de caracteres TRUE. Si el valor de origen es FALSE, el resultado es la serie de caracteres FALSE. Puesto que el valor booleano UNKNOWN es igual que el valor NULL para booleanos, el resultado es NULL si el valor de origen es UNKNOWN. |
CHARACTER | BIT | La serie de caracteres se debe ajustar a las normas para un literal de serie de bits o para el contenido del literal de serie de bits. Esto es, la serie de caracteres puede tener el formato B'bbbbbbb' o bbbbbb (donde b' puede
ser 0 ó 1). Si especifica una cláusula CCSID o ENCODING, la serie de caracteres se convierte a la codificación y CCSID especificados y se colocan sin ninguna conversión adicional en el valor de retorno de matriz de bits. Si especifica solamente CCSID, se presupone una codificación de big endian. Si sólo especifica una codificación, se presupone un CCSID de 1208. Esta función genera errores de conversión si la página de códigos o la codificación se desconocen o si los datos contienen caracteres Unicode que no se pueden convertir a la página de códigos concreta. |
![]() ![]() |
![]() ![]() |
![]()
Si especifica solamente CCSID, se presupone una codificación de big endian. Si sólo especifica una codificación, se presupone un CCSID de 1208. Esta función genera errores de conversión si la página de códigos o la codificación se desconocen o si los datos contienen caracteres Unicode que no se pueden convertir a la página de códigos concreta. ![]() |
CHARACTER | BOOLEAN | La serie de caracteres se interpreta del mismo modo que un literal booleano. Esto es, la serie de caracteres debe ser una de las series TRUE, FALSE o UNKNOWN (en cualquier combinación de mayúsculas y minúsculas). |
CHARACTER | CHARACTER | El resultado es el mismo que la entrada. |
CHARACTER | DATE | Si no se especifica una cláusula
FORMAT, la serie de caracteres debe satisfacer las normas de un
literal de fecha o la serie de caracteres de fecha. Esto es, la serie de caracteres puede tener el formato DATE
'2002-10-05' o 2002-10-05. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
CHARACTER | DECIMAL | La serie de caracteres se interpreta del mismo modo
que un literal numérico exacto para crear un resultado decimal temporal
con una escala y
precisión
definidos por el formato de la serie de caracteres. Este se convierte a un
decimal de la precisión y escala
especificadas y se genera un error de
ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
CHARACTER | FLOAT | La serie de caracteres se interpreta del mismo modo que un literal de punto flotante. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
CHARACTER | GMTTIME | La serie de caracteres se debe ajustar a las normas para un literal de hora
GMT o una serie de caracteres de hora. Esto es, la serie de caracteres puede
ser GMTTIME '09:24:15' o 09:24:15. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
CHARACTER | GMTTIMESTAMP | La serie de caracteres se debe ajustar a las normas para un literal de indicación de la hora
GMT o una serie de caracteres de indicación de la hora. Esto es, la serie de caracteres puede tener el formato GMTTIMESTAMP '2002-10-05 09:24:15' o 2002-10-05 09:24:15. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
CHARACTER | INTEGER | La serie de caracteres se interpreta del mismo modo que un literal entero. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
CHARACTER | INTERVAL | La serie de caracteres se debe ajustar a las normas para un literal de intervalo con el mismo calificador de intervalo que el especificado en la función CAST, o se debe ajustar a las normas para una serie de caracteres de intervalo que se aplica al calificador de intervalo especificado. |
CHARACTER | TIME | La serie de caracteres se debe ajustar a las normas para un literal de hora o para la serie de caracteres de hora. Esto es, la serie de caracteres puede
ser TIME '09:24:15' o 09:24:15. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
CHARACTER | TIMESTAMP | La serie de caracteres se debe ajustar a las normas para un literal de indicación de la hora
GMT o una serie de caracteres de indicación de la hora. Esto es, la serie de caracteres puede tener el formato TIMESTAMP '2002-10-05 09:24:15' o 2002-10-05 09:24:15. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
DATE | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal de fecha cuyo valor interpretado es el mismo que el valor de fecha de origen. Por ejemplo:
CAST(DATE '2002-10-05' AS CHARACTER)devuelve DATE '2002-10-05' El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
DATE | DATE | El resultado es el mismo que la entrada. |
DATE | GMTTIMESTAMP | El resultado es un valor cuyos campos de fecha se toman del valor de fecha de origen y cuyos campos de hora se toman de la hora GMT actual. |
DATE | TIMESTAMP | El resultado es un valor cuyos campos de fecha se toman del valor de fecha de origen y cuyos campos de hora se toman de la hora actual. |
DECIMAL | CHARACTER | El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico exacto y cuyo valor interpretado es el valor del decimal. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
DECIMAL | DECIMAL | El valor se convierte a la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión ni la escala, se conservan el valor, la precisión y la escala. Se trata de un NOOP (sin operación). |
DECIMAL | FLOAT | El número se convierte con redondeo, si es necesario. |
DECIMAL | INTEGER | El valor se redondea y convierte en un entero y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. |
DECIMAL | INTERVAL | Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico exacto. De lo contrario, se genera un error de ejecución. |
FLOAT | CHARACTER | El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico y cuya mantisa consta de un solo dígito que no es 0, seguido de un punto y un entero sin signo y cuyo valor interpretado es el valor de FLOAT. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
FLOAT | FLOAT | El resultado es el mismo que la entrada. |
FLOAT | DECIMAL | El valor se redondea y se convierte a un decimal de la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado. |
FLOAT | INTEGER | El valor se redondea y convierte en un entero y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. |
FLOAT | INTERVAL | Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico. De lo contrario, se genera un error de ejecución. |
GMTTIME | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal GMTTIME cuyo valor interpretado es el mismo que el valor de origen.
La serie resultante tiene el formato GMTTIME 'hh:mm:ss'. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
GMTTIME | GMTTIME | El resultado es el mismo que la entrada. |
GMTTIME | TIME | El valor resultante es el valor de origen más el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado. |
GMTTIME | GMTTIMESTAMP | El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen. |
GMTTIME | TIMESTAMP | El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen, más el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). |
GMTTIMESTAMP | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal GMTTIMESTAMP cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato GMTTIMESTAMP 'aaaa-mm-dd hh:mm:ss'. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
GMTTIMESTAMP | DATE | El resultado es un valor cuyos campos constan de los campos de fecha del valor GMTTIMESTAMP de origen. |
GMTTIMESTAMP | GMTTIME | El resultado es un valor cuyos campos constan de los campos de hora del valor GMTTIMESTAMP de origen. |
GMTTIMESTAMP | TIME | El resultado es un valor cuyos campos de hora se toman del valor GMTTIMESTAMP de origen, más el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado. |
GMTTIMESTAMP | GMTTIMESTAMP | El resultado es el mismo que la entrada. |
GMTTIMESTAMP | TIMESTAMP | El valor resultante es el valor de origen más el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). |
INTEGER | BIT | El entero proporcionado se convierte en una matriz de bits con un máximo de 263 elementos. |
INTEGER | BLOB | El entero proporcionado se convierte en una matriz de bytes con un máximo de 263 elementos. |
INTEGER | CHARACTER | El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico exacto y cuyo valor interpretado es el valor del entero. El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres. |
INTEGER | FLOAT | El número se convierte con redondeo, si es necesario. |
INTEGER | INTEGER | El resultado es el mismo que la entrada. |
INTEGER | DECIMAL | El valor se convierte a un decimal de la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado. |
INTEGER | INTERVAL | Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico exacto. De lo contrario, se genera un error de ejecución. |
INTERVAL | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal de fecha cuyo valor interpretado es el mismo que el valor de intervalo de origen. Por ejemplo:
CAST(INTERVAL '4' YEARS AS CHARACTER)devuelve INTERVAL '4' YEARS |
INTERVAL | DECIMAL | Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un decimal de la precisión y escala especificadas con dicho valor y se genera un error de ejecución si durante la conversión se pierden datos significativos. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado. |
INTERVAL | FLOAT | Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un valor flotante con dicho valor. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución. |
INTERVAL | INTEGER | Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un entero con dicho valor. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución. |
INTERVAL | INTERVAL | El resultado es el mismo que la entrada. Los intervalos de año-mes sólo se pueden convertir a intervalos de años y mes, y los intervalos de día-segundo sólo se pueden convertir a intervalos de día-segundo. El intervalo de origen se convierte a un escalar en unidades del campo menos significativo del calificador de intervalo de destino. Este valor se normaliza en un intervalo con el calificador de intervalo de destino. Por ejemplo, para convertir un intervalo que tiene el calificador MINUTE TO SECOND en un intervalo con el calificador DAY TO HOUR, el valor de origen se convierte en una escala en unidades de horas y este valor se normaliza en un intervalo con el calificador DAY TO HOUR. |
TIME | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal TIME cuyo valor interpretado es el mismo que el valor de hora de origen.
Por ejemplo:
CAST(TIME '09:24:15' AS CHARACTER)devuelve TIME '09:24:15' El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
TIME | GMTTIME | El valor resultante es el valor de origen menos el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado. |
TIME | GMTTIMESTAMP | El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen, menos el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). |
TIME | TIME | El resultado es el mismo que la entrada. |
TIME | TIMESTAMP | El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toma del valor de hora de origen. |
TIMESTAMP | CHARACTER | El resultado es una serie que se ajusta a la definición de un literal TIMESTAMP, cuyo valor interpretado es el mismo que el valor de indicación de la hora de origen. Por ejemplo:
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHARACTER)devuelve TIMESTAMP '2002-10-05 09:24:15' El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres. |
TIMESTAMP | DATE | El resultado es un valor cuyos campos constan de los campos de fecha del valor de indicación de la hora de origen. |
TIMESTAMP | GMTTIME | El resultado es un valor cuyos campos de hora se toman del valor TIMESTAMP de origen, menos el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado. |
TIMESTAMP | GMTTIMESTAMP | El valor resultante es el valor de origen menos el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). |
TIMESTAMP | TIME | El resultado es un valor cuyos campos constan de los campos de hora del valor de indicación de la hora de origen. |
TIMESTAMP | TIMESTAMP | El resultado es el mismo que la entrada. |
Tipo de datos de origen | Tipo de datos de destino | Efecto |
---|---|---|
Numérico, Numérico, Numérico | DATE | Crea un valor DATE a partir de los valores numéricos en el orden año, mes y día. Se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico | TIME | Crea un valor TIME a partir de los valores numéricos en el orden horas, minutos y segundos. Para horas y minutos se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico | GMTIME | Crea un valor GMTTIME a partir de los valores numéricos en el orden horas, minutos y segundos. Para horas y minutos se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico | TIMESTAMP | Crea un valor TIMESTAMP a partir de los valores numéricos en el orden años, meses, días, horas, minutos y segundos. Para años, meses, días, horas y minutos se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico | GMTTIMESTAMP | Crea un valor GMTTIMESTAMP a partir de los valores numéricos en el orden años, meses, días, horas, minutos y segundos. Para años, meses, días, horas y minutos se redondean los valores que no son enteros. |
DATE, TIME | TIMESTAMP | El resultado es un valor TIMESTAMP con los valores DATE y TIME especificados. |
DATE, GMTTIME | GMTIMESTAMP | El resultado es un valor GMTTIMESTAMP con los valores DATE y GMTTIME especificados. |
Numérico, Numérico | INTERVAL YEAR TO MONTH | El resultado es un valor de INTERVAL con el primer origen como años y el segundo como meses. Se redondean los valores que no son enteros. |
Numérico, Numérico | INTERVAL HOUR TO MINUTE | El resultado es un valor de INTERVAL con el primer origen como horas y el segundo como minutos. Se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico | INTERVAL HOUR TO SECOND | El resultado es un valor de INTERVAL con los valores origen como horas, minutos y segundos, respectivamente. Para horas y minutos se redondean los valores que no son enteros. |
Numérico, Numérico | INTERVAL MINUTE TO SECOND | El resultado es un valor de INTERVAL con los valores origen como minutos y segundos, respectivamente. Para minutos se redondean los valores que no son enteros. |
Numérico, Numérico | INTERVAL DAY TO HOUR | El resultado es un valor de INTERVAL con los valores origen como días y horas, respectivamente. Se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico | INTERVAL DAY TO MINUTE | El resultado es un valor de INTERVAL con los valores origen como días, horas y minutos, respectivamente. Se redondean los valores que no son enteros. |
Numérico, Numérico, Numérico, Numérico | INTERVAL DAY TO SECOND | El resultado es un valor de INTERVAL con los valores origen como días, horas, minutos y segundos, respectivamente. Para días, horas y minutos se redondean los valores que no son enteros. |
Numérico | INTERVAL YEAR | El resultado es un valor de INTERVAL con el origen como años, con el valor redondeado si fuera necesario. |
Numérico | INTERVAL MONTH | El resultado es un valor de INTERVAL con el origen como meses, con el valor redondeado si fuera necesario. |
Numérico | INTERVAL DAY | El resultado es un valor de INTERVAL con el origen como días, con el valor redondeado si fuera necesario. |
Numérico | INTERVAL HOUR | El resultado es un valor de INTERVAL con el origen como horas, con el valor redondeado si fuera necesario. |
Numérico | INTERVAL MINUTE | El resultado es un valor de INTERVAL con el origen como minutos, con el valor redondeado si fuera necesario. |
Numérico | INTERVAL SECOND | El resultado es un valor de INTERVAL con el origen como segundos. |