Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Este tópico descreve o que é devolvido nos campos de descritor de parâmetro de implementação (IPD) e descritor de linha de implementação (IRD) para tipos de dados de data e hora.
Informação Devolvida nos Campos IPD
A seguinte informação é devolvida nos campos IPD:
| Tipo de parâmetro | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_CASE_SENSITIVE (sensível a maiúsculas e minúsculas) | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| Precisão do Intervalo de Data/Hora em SQL | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_TYPE | SQL_TYPE_DATE | SQL_SS_TYPE_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date | time | smalldatetime no IRD, datetime2 no IPD | datetime no IRD, datetime2 no IPD | datetime2 | datetimeoffset |
| SQL_CA_SS_VARIANT_TYPE | SQL_C_TYPE_DATE | SQL_C_TYPE_BINARY | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_BINARY |
| SQL_CA_SS_VARIANT_SQL_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_CA_SS_SERVER_TYPE | N/A | N/A | SQL_SS_TYPE_SMALLDATETIME | SQL_SS_TYPE_DATETIME | SQL_SS_TYPE_DEFAULT | N/A |
Por vezes há descontinuidades nos intervalos de valor. Por exemplo, falta 9 em 8, 10... 16. Isto deve-se à adição de um ponto decimal quando a precisão fracionada é superior a zero.
datetime2 é devolvido como nome de tipo para smalldatetime e datetime porque o driver usa este tipo comum para transmitir todos os valores de SQL_TYPE_TIMESTAMP ao servidor.
SQL_CA_SS_VARIANT_SQL_TYPE é um campo de descrição novo. Este campo foi adicionado ao IRD e IPD para permitir que as aplicações especifiquem o tipo de valor associado às colunas e parâmetros sqlvariant (SQL_SSVARIANT)
SQL_CA_SS_SERVER_TYPE é um novo campo exclusivo para IPD que permite às aplicações controlar como os valores para parâmetros ligados como SQL_TYPE_TYPETIMESTAMP (ou como SQL_SS_VARIANT com SQL_C_TYPE_TIMESTAMP tipo C) são enviados para o servidor. Se SQL_DESC_CONCISE_TYPE for SQL_TYPE_TIMESTAMP (ou for SQL_SS_VARIANT e o tipo C for SQL_C_TYPE_TIMESTAMP) quando é chamado SQLExecute ou SQLExecDirect, o valor de SQL_CA_SS_SERVER_TYPE determina o tipo de fluxo de dados tabulares (TDS) do valor do parâmetro, da seguinte forma:
| Valor da SQL_CA_SS_SERVER_TYPE | Valores válidos para SQL_DESC_PRECISION | Valores válidos para SQL_DESC_LENGTH | Tipo TDS |
|---|---|---|---|
| SQL_SS_TYPE_DEFAULT | 0..7 | 19, 21..27 | datetime2 |
| SQL_SS_TYPE_SMALLDATETIME | 0 | 19 | smalldatetime |
| SQL_SS_TYPE_DATETIME | 3 | 23 | datetime |
A configuração padrão de SQL_CA_SS_SERVER_TYPE é SQL_SS_TYPE_DEFAULT. As definições de SQL_DESC_PRECISION e SQL_DESC_LENGTH são validadas com a configuração de SQL_CA_SS_SERVER_TYPE conforme descrito na tabela acima. Se esta validação falhar, SQL_ERROR é devolvido e um registo de diagnóstico é registado com SQLState 07006 e a mensagem "Violação do atributo do tipo de dado restrito". Este erro também é devolvido se SQL_CA_SS_SERVER_TYPE for definido para um valor diferente de SQL_SS_TYPE DEFAULT e DESC_CONCISE_TYPE não for SQL_TYPE_TIMESTAMP. Estas validações são realizadas quando ocorre validação de consistência de descritores, por exemplo:
Quando SQL_DESC_DATA_PTR for alterado.
No momento de preparar ou executar (quando é chamado SQLExecute, SQLExecDirect, SQLSetPos ou SQLBulkOperations).
Quando uma aplicação força um preparar não diferido ao chamar SQLPrepare com o prepare diferido desativado, ou ao chamar SQLNumResultCols, SQLDescribeCol ou SQLDescribeParam para uma instrução que está preparada mas não executada.
Quando SQL_CA_SS_SERVER_TYPE é definido por uma chamada para SQLSetDescField, o seu valor deve ser SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME ou SQL_SS_TYPE_DATETIME. Se não for o caso, SQL_ERROR é devolvido e um registo de diagnóstico é registado com SQLState HY092 e a mensagem "Invalid attribute/option identifier".
O atributo SQL_CA_SS_SERVER_TYPE pode ser usado por aplicações que dependem da funcionalidade suportada por datetime e smalldatetime, mas não por datetime2. Por exemplo, o datetime2 requer a utilização das funções dateadd e datediif , enquanto datetime e smalldatetime também permitem operadores aritméticos. A maioria das aplicações não precisará de usar este atributo e o seu uso deve ser evitado.
Informação Devolvida em Campos IRD
A seguinte informação é devolvida nos campos IRD:
| Tipo de coluna | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_AUTO_UNIQUE_VALUE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CASE_SENSITIVE (sensível a maiúsculas e minúsculas) | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| Precisão do Intervalo de Data/Hora em SQL | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_DISPLAY_SIZE | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 2 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_LITERAL_PREFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LITERAL_SUFFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LOCAL_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE |
| SQL_DESC_TYPE | SQL_DATETIME | SQL_SS_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
| SQL_DESC_UNSIGNED | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE |