Compartilhar via


Substituir precisão inicial e de segundos padrão para tipos de dados de intervalo

Quando o campo SQL_DESC_TYPE de um ARD é definido como um tipo C datetime ou interval, chamando SQLBindCol ou SQLSetDescField, o campo SQL_DESC_PRECISION (que contém a precisão de segundos de intervalo) é definido como os seguintes padrões:

  • 6 para carimbo de data/hora e todos os tipos de dados de intervalo com um segundo componente.

  • 0 para todos os outros tipos de dados.

Para todos os tipos de dados de intervalo, o campo descritor SQL_DESC_DATETIME_INTERVAL_PRECISION, que contém a precisão do campo à esquerda do intervalo, é definido como um valor padrão de 2.

Quando o campo SQL_DESC_TYPE em uma APD é definido como um tipo C datetime ou interval, chamando SQLBindParameter ou SQLSetDescField, os campos SQL_DESC_PRECISION e SQL_DESC_DATETIME_INTERVAL_PRECISION no APD são definidos como o padrão fornecido anteriormente. Isso é verdadeiro para parâmetros de entrada, mas não para parâmetros de entrada/saída ou saída.

Uma chamada para SQLSetDescRec define o intervalo que leva a precisão para o padrão, mas define a precisão de segundos do intervalo (no campo SQL_DESC_PRECISION) como o valor de seu argumento Precision .

Se um dos padrões determinados anteriormente não for aceitável para um aplicativo, o aplicativo deverá definir o campo SQL_DESC_PRECISION ou SQL_DESC_DATETIME_INTERVAL_PRECISION chamando SQLSetDescField.

Se o aplicativo chamar SQLGetData para retornar dados em um tipo datetime ou intervalo C, a precisão padrão de intervalo à esquerda e a precisão de segundos de intervalo serão usadas. Se o padrão não for aceitável, o aplicativo deverá chamar SQLSetDescField para definir o campo descritor ou SQLSetDescRec para definir SQL_DESC_PRECISION. A chamada para SQLGetData deve ter um TargetType de SQL_ARD_TYPE para usar os valores nos campos do descritor.

Quando SQLPutData é chamado, a precisão de intervalo à esquerda e a precisão de segundos de intervalo são lidas dos campos do registro do descritor que correspondem ao parâmetro ou coluna de dados em execução, que são campos APD para chamadas para SQLExecute ou SQLExecDirect ou campos ARD para chamadas para SQLBulkOperations ou SQLSetPos.