Compartir vía


Precisión del tipo de datos de intervalo

La precisión de un tipo de datos interval incluye la precisión inicial del intervalo, la precisión del intervalo y la precisión de segundos.

El campo inicial de un intervalo es un numérico con signo. El número máximo de dígitos para el campo inicial viene determinado por una cantidad denominada precisión inicial del intervalo, que forma parte de la declaración de tipo de datos. Por ejemplo, la declaración: INTERVAL HOUR(5) TO MINUTE tiene una precisión inicial del intervalo de 5; el campo HOUR puede tomar valores de -99999 a 99999. La precisión inicial del intervalo se encuentra en el campo SQL_DESC_DATETIME_INTERVAL_PRECISION del registro descriptor.

La lista de campos de los que se compone un tipo de datos interval se denomina precisión de intervalo. No es un valor numérico, ya que el término "precisión" podría implicar. Por ejemplo, la precisión de intervalo del tipo INTERVAL DAY TO SECOND es la lista DAY, HOUR, MINUTE, SECOND. No hay ningún campo descriptor que contenga este valor; la precisión del intervalo siempre se puede determinar mediante el tipo de datos interval.

Cualquier tipo de datos interval que tenga un campo SECOND tiene una precisión de segundos. Este es el número de dígitos decimales permitidos en la parte fraccionarcional del valor de segundos. Esto es diferente al de otros tipos de datos, donde la precisión indica el número de dígitos antes del separador decimal. La precisión de segundos de un tipo de datos interval es el número de dígitos después del separador decimal. Por ejemplo, si la precisión de segundos se establece en 6, el número 123456 en el campo de fracción se interpretaría como .123456 y el número 1230 se interpretaría como .001230. Para otros tipos de datos, esto se conoce como escala. La precisión de los segundos de intervalo se encuentra en el campo SQL_DESC_PRECISION del descriptor. Si la precisión del componente fracciones de segundos del valor del intervalo de SQL es mayor que lo que se puede mantener en la estructura del intervalo de C, se define el controlador si el valor de fracciones de segundos del intervalo SQL se redondea o trunca cuando se convierte en la estructura del intervalo de C.

Cuando el campo SQL_DESC_CONCISE_TYPE se establece en un tipo de datos interval, el campo SQL_DESC_TYPE se establece en SQL_INTERVAL y el SQL_DESC_DATETIME_INTERVAL_CODE se establece en el código del tipo de datos interval. El campo SQL_DESC_DATETIME_INTERVAL_PRECISION se establece automáticamente en la precisión inicial del intervalo predeterminado de 2 y el campo SQL_DESC_PRECISION se establece automáticamente en la precisión predeterminada de segundos de intervalo de 6. Si alguno de estos valores no es adecuado, la aplicación debe establecer explícitamente el campo descriptor a través de una llamada a SQLSetDescField.