Compartilhar via


Precisão do tipo de dados de intervalo

A precisão de um tipo de dados de intervalo inclui precisão de intervalo à esquerda, precisão de intervalo e precisão de segundos.

O campo à esquerda de um intervalo é um numérico assinado. O número máximo de dígitos para o campo à esquerda é determinado por uma quantidade chamada intervalo de precisão à esquerda, que faz parte da declaração de tipo de dados. Por exemplo, a declaração: INTERVAL HOUR(5) TO MINUTE tem um intervalo de precisão à esquerda de 5; o campo HORA pode obter valores de -99999 a 99999. A precisão à esquerda do intervalo está contida no campo SQL_DESC_DATETIME_INTERVAL_PRECISION do registro do descritor.

A lista de campos dos quais um tipo de dados de intervalo é composto é chamada de precisão de intervalo. Não é um valor numérico, pois o termo "precisão" pode implicar. Por exemplo, a precisão do intervalo do tipo INTERVAL DAY TO SECOND é a lista DIA, HORA, MINUTO, SEGUNDO. Não há nenhum campo descritor que contenha esse valor; a precisão do intervalo sempre pode ser determinada pelo tipo de dados interval.

Qualquer tipo de dados de intervalo que tenha um campo SECOND tem uma precisão de segundos. Esse é o número de dígitos decimais permitidos na parte fracionária do valor de segundos. Isso é diferente de outros tipos de dados, em que a precisão indica o número de dígitos antes do ponto decimal. A precisão de segundos de um tipo de dados de intervalo é o número de dígitos após o ponto decimal. Por exemplo, se a precisão de segundos for definida como 6, o número 123456 no campo fração será interpretado como .123456 e o número 1230 será interpretado como .001230. Para outros tipos de dados, isso é conhecido como escala. A precisão de segundos de intervalo está contida no campo SQL_DESC_PRECISION do descritor. Se a precisão do componente de segundos fracionários do valor do intervalo SQL for maior do que o que pode ser mantido na estrutura de intervalo C, será definido pelo driver se o valor de segundos fracionários no intervalo SQL é arredondado ou truncado quando convertido na estrutura do intervalo C.

Quando o campo SQL_DESC_CONCISE_TYPE é definido como um tipo de dados de intervalo, o campo SQL_DESC_TYPE é definido como SQL_INTERVAL e o SQL_DESC_DATETIME_INTERVAL_CODE é definido como o código para o tipo de dados de intervalo. O campo SQL_DESC_DATETIME_INTERVAL_PRECISION é definido automaticamente como o intervalo padrão de precisão à esquerda de 2 e o campo SQL_DESC_PRECISION é definido automaticamente como a precisão de segundos de intervalo padrão de 6. Se um desses valores não for apropriado, o aplicativo deverá definir explicitamente o campo descritor por meio de uma chamada para SQLSetDescField.