Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
Este artigo descreve as conversões de data/hora realizadas entre uma aplicação cliente escrita com o OLE DB Driver para SQL Server 2008 (10.0.x) e versões posteriores.
Conversions
Este artigo descreve conversões feitas no cliente. Se o cliente especificar precisão fracionária de segundo para um parâmetro que difere daquele definido no servidor, a conversão do cliente pode causar uma falha nos casos em que o servidor permita que a operação tenha sucesso. Em particular, o cliente trata qualquer truncamento de segundos fracionários como um erro, enquanto o SQL Server arredonda os valores de tempo para o segundo inteiro mais próximo.
Se ICommandWithParameters::SetParameterInfo não for chamado, DBTYPE_DBTIMESTAMP ligações são convertidas como se fossem datetime2.
| Para-> De |
DBDATE (data) | DBTIME (tempo) | DBTIME2 (tempo) | DBTIMESTAMP (smalldatetimetime) | DBTIMESTAMP (data-hora) | DBTIMESTAMP (datetime2) | DBTIMESTAMPOFFSET (datatimeoffset) | STR | WSTR | SQLVARIANT (sql_variant) |
|---|---|---|---|---|---|---|---|---|---|---|
| DATE | 1, 2 | 1, 3, 4 | 4, 12 | 1, 12 | 1, 12 | 1, 12 | 1, 5, 12 | 1, 12 | 1, 12 | 1, 12 datetime2(0) |
| DBDATE | 1 | - | - | 1, 6 | 1, 6 | 1, 6 | 1, 5, 6 | 1, 10 | 1, 10 | 1 date |
| DBTIME | - | 1 | 1 | 1, 7 | 1, 7 | 1, 7 | 1, 5, 7 | 1, 10 | 1, 10 | 1 Tempo(0) |
| DBTIME2 | - | 1, 3 | 1 | 1, 7, 10, 14 | 1, 7, 10, 15 | 1, 7, 10 | 1, 5, 7, 10 | 1, 10, 11 | 1, 10, 11 | 1 Tempo(7) |
| DBTIMESTAMP | 1, 2 | 1, 3, 4 | 1, 4, 10 | 1, 10, 14 | 1, 10, 15 | 1, 10 | 1, 5, 10 | 1, 10,11 | 1, 10, 11 | 1, 10 datetime2(7) |
| DBTIMESTAMPOFFSET | 1, 2, 8 | 1, 3, 4, 8 | 1, 4, 8, 10 | 1, 8, 10, 14 | 1, 8, 10, 15 | 1, 8, 10 | 1, 10 | 1, 10, 11 | 1, 10, 11 | 1, 10 DateTimeOffset(7) |
| FILETIME | 1, 2 | 1, 3, 4 | 1, 4, 13 | 1, 13 | 1, 13 | 1, 13 | 1, 5, 13 | 1, 13 | 1, 10 | 1, 13 datetime2(3) |
| BYTES | - | - | - | - | - | - | - | N/A | N/A | N/A |
| VARIANT | 1 | 1 | 1 | 1, 10 | 1, 10 | 1, 10 | 1, 10 | N/A | N/A | 1, 10 |
| SSVARIANT | 1, 16 | 1, 16 | 1, 16 | 1, 10, 16 | 1, 10, 16 | 1, 10, 16 | 1, 10, 16 | N/A | N/A | 1, 16 |
| BSTR | 1, 9 | 1, 9 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | N/A | N/A | N/A |
| STR | 1, 9 | 1, 9 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | N/A | N/A | N/A |
| WSTR | 1, 9 | 1, 9 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | 1, 9, 10 | N/A | N/A | N/A |
Chave dos Símbolos
| Symbol | Meaning |
|---|---|
| - | Não é suportada conversão. Se a ligação for validada quando IAccessor::CreateAccessor for chamado, DBBINDSTATUS_UPSUPPORTEDCONVERSION é devolvido em rgStatus. Quando a validação do acessório é adiada, DBSTATUS_E_BADACCESSOR é definida. |
| N/A | Não aplicável. |
| 1 | Se os dados fornecidos não forem válidos, DBSTATUS_E_CANTCONVERTVALUE é definido. Os dados de entrada são validados antes de as conversões serem aplicadas, por isso, mesmo quando um componente for ignorado por uma conversão subsequente, tem de ser válido para que a conversão tenha sucesso. |
| 2 | Os campos temporais são ignorados. |
| 3 | Os segundos fracionários devem ser zero ou DBSTATUS_E_DATAOVERFLOW é definido. |
| 4 | O componente de data é ignorado. |
| 5 | O fuso horário está definido para a definição do cliente. |
| 6 | O tempo está definido para zero. |
| 7 | A data está definida para a data atual. |
| 8 | A hora é convertida para UTC. Se ocorrer um erro durante esta conversão, DBSTATUS_E_CANTCONVERTVALUE é definido. |
| 9 | A cadeia é analisada como um literal ISO e convertida para o tipo alvo. Se isto falhar, a cadeia é analisada como um literal de data OLE (que também tem componentes temporais) e convertida de data OLE (DBTYPE_DATE) para o tipo alvo. Se o tipo alvo for DBTIMESTAMP, smalldatetime, datetime ou datetime2, a string deve estar em conformidade com a sintaxe dos literais date, time ou datetime2 , ou com a sintaxe reconhecida pelo OLE. Se a cadeia for um literal de data, todos os componentes temporais são definidos a zero. Se a cadeia for um literal temporal, a data é definida para a data atual. Para todos os outros tipos de alvo, a cadeia deve conformar-se à sintaxe dos literais do tipo alvo. |
| 10 | Se ocorrer truncamento de frações de segundos com perda de dados, DBSTATUS_E_DATAOVERFLOW é definido. Para conversões de strings, a verificação de overflow só é possível quando a string cumpre a sintaxe ISO. Se a cadeia for um literal de data OLE, os segundos fracionários são arredondados. Para conversão de DBTIMESTAMP (datatime) para smalldatetime, o OLE DB Driver para SQL Server trunca silenciosamente o valor dos segundos em vez de gerar o erro DBSTATUS_E_DATAOVERFLOW. |
| 11 | O número de dígitos de segundo fracionário (a escala) é determinado a partir do tamanho da coluna de destino, de acordo com a tabela abaixo. Para tamanhos de colunas maiores do que o intervalo na tabela, implícite-se uma escala de 9. Esta conversão deve permitir até nove dígitos fracionários de segundo, o máximo permitido pelo OLE DB. No entanto, se o tipo de origem for o carimbo DBTIME e os segundos fracionários forem zero, não são gerados dígitos de segundo fracionário nem ponto decimal. Este comportamento garante compatibilidade retrocedente para aplicações desenvolvidas com fornecedores OLE DB mais antigos. Um tamanho de coluna de ~0 implica tamanho ilimitado no OLE DB (9 dígitos, a menos que se aplique a regra dos 3 dígitos para o carimbo DBTIMESTAMP). |
| 12 | As semânticas de conversão anteriores ao SQL Server 2008 (10.0.x) para DBTYPE_DATE são mantidas. Os segundos fracionários são truncados até zero. |
| 13 | As semânticas de conversão anteriores ao SQL Server 2008 (10.0.x) para DBTYPE_FILETIME são mantidas. Se usar a API Windows FileTimeToSystemTime, a precisão fracionária de segundos é limitada a 1 milissegundo. |
| 14 | As semânticas de conversão anteriores ao SQL Server 2008 (10.0.x) para smalldatetime são mantidas. Os segundos estão definidos para zero. |
| 15 | As semânticas de conversão anteriores ao SQL Server 2008 (10.0.x) para data-hora são mantidas. Os segundos são arredondados para o 300º de segundo mais próximo. |
| 16 | O comportamento de conversão de um valor (de um dado tipo) embutido numa estrutura cliente SSVARIANT é o mesmo que o comportamento do mesmo valor e tipo quando não está embutido numa estrutura cliente SSVARIANT. |
| Tipo | Comprimento (em caracteres) | Scale |
|---|---|---|
| DBTIME2 | 8, 10..18 | 0,1..9 |
| DBTIMESTAMP | 19, 21..29 | 0,1..9 |
| DBTIMESTAMPOFFSET | 26, 28..36 | 0,1..9 |