Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve conversões de data/hora executadas entre um aplicativo cliente escrito com o SQL Server Native Client OLE DB e o SQL Server 2008 (ou posterior).
Conversões
Este tópico descreve as conversões feitas no cliente. Se o cliente especificar precisão de segundos fracionários para um parâmetro diferente daquele definido no servidor, a conversão do cliente poderá causar uma falha nos casos em que o servidor permitiria que a operação fosse bem-sucedida. Em particular, o cliente trata qualquer truncamento de segundos fracionários como um erro, enquanto o SQL Server arredonda valores de tempo para o segundo inteiro mais próximo.
Se ICommandWithParameters::SetParameterInfo não for chamado, DBTYPE_DBTIMESTAMP associações serão convertidas como se fossem datetime2.
| Para-> De |
DBDATE (data) | DBTIME (hora) | DBTIME2 (hora) | DBTIMESTAMP (smalldatetime) | DBTIMESTAMP (datetime) | DBTIMESTAMP (datetime2) | DBTIMESTAMPOFFSET (datetimeoffset) | STR | WSTR | SQLVARIANT (sql_variant) |
|---|---|---|---|---|---|---|---|---|---|---|
| DATA | 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 data |
| DBTIME | - | 1 | 1 | 1,7 | 1,7 | 1,7 | 1,5, 7 | 1,10 | 1,10 | 1 Hora(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 Time(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ão aplicável | Não aplicável | Não aplicável |
| VARIANTE | 1 | 1 | 1 | 1,10 | 1,10 | 1,10 | 1,10 | Não aplicável | Não aplicável | 1,10 |
| SSVARIANT | 1,16 | 1,16 | 1,16 | 1,10,16 | 1,10,16 | 1,10,16 | 1,10,16 | Não aplicável | Não aplicável | 1,16 |
| BSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | Não aplicável | Não aplicável | Não aplicável |
| STR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | Não aplicável | Não aplicável | Não aplicável |
| WSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | Não aplicável | Não aplicável | Não aplicável |
Legenda dos símbolos
| Símbolo | Significado |
|---|---|
| - | Não há suporte a nenhuma conversão. Se a associação for validada quando IAccessor::CreateAccessor for chamado, DBBINDSTATUS_UPSUPPORTEDCONVERSION será retornado em rgStatus. Quando a validação do acessador é adiada, DBSTATUS_E_BADACCESSOR é definido. |
| Não aplicável | Não aplicável. |
| 1 | Se os dados fornecidos não forem válidos, DBSTATUS_E_CANTCONVERTVALUE será definido. Os dados de entrada são validados antes que as conversões sejam aplicadas, portanto, mesmo quando um componente será ignorado por uma conversão subsequente, ele ainda deve ser válido para que a conversão seja bem-sucedida. |
| 2 | Os campos de tempo são ignorados. |
| 3 | Segundos fracionários devem ser zero ou DBSTATUS_E_DATAOVERFLOW está definido. |
| 4 | O componente de data é ignorado. |
| 5 | O fuso horário é definido como a configuração de fuso horário do cliente. |
| 6 | A hora é definida como zero. |
| 7 | A data é definida como a data atual. |
| oito | A hora é convertida em UTC. Se ocorrer um erro durante essa conversão, DBSTATUS_E_CANTCONVERTVALUE será definido. |
| 9 | A cadeia de caracteres é analisada como um literal ISO e convertida no tipo de destino. Se isso falhar, a cadeia de caracteres será analisada como um literal de data OLE (que também tem componentes de hora) e convertida de uma data OLE (DBTYPE_DATE) para o tipo de destino. Se o tipo de destino for DBTIMESTAMP, smalldatetime, datetimeou datetime2, a cadeia de caracteres deverá estar em conformidade com a sintaxe para data, hora ou datetime2 literais ou a sintaxe reconhecida pelo OLE. Se a cadeia de caracteres for um literal de data, todos os componentes de tempo serão definidos como zero. Se a cadeia de caracteres for um literal de hora, a data será definida como a data atual.Para todos os outros tipos de destino, a cadeia de caracteres deve estar em conformidade com a sintaxe de literais do tipo de destino. |
| 10 | Se ocorrer truncamento de segundos fracionários com perda de dados, DBSTATUS_E_DATAOVERFLOW será definido. Para conversões de cadeia de caracteres, a verificação de estouro só é possível quando a cadeia de caracteres está em conformidade com a sintaxe ISO. Se a cadeia de caracteres for um literal de data OLE, segundos fracionários serão arredondados. Para conversão de DBTIMESTAMP (datetime) para smalldatetime, o SQL Server Native Client truncará silenciosamente o valor de segundos em vez de aumentar o erro de DBSTATUS_E_DATAOVERFLOW. |
| 11 | O número de dígitos fracionários de segundo (a escala) é determinado do tamanho da coluna de destino, de acordo com a tabela a seguir. Para tamanhos de coluna maiores do que o intervalo na tabela, é sugerida uma escala de 9. Essa conversão deve permitir até nove dígitos de frações de segundo, o máximo permitido pelo OLE DB. No entanto, se o tipo de origem for DBTIMESTAMP e os segundos fracionários forem zero, nenhum segundo fracionário ou ponto decimal será gerado. Esse comportamento garante a compatibilidade com versões anteriores para aplicativos desenvolvidos usando provedores OLE DB mais antigos. Um tamanho de coluna de ~0 implica tamanho ilimitado no OLE DB (9 dígitos, a menos que a regra de 3 dígitos para DBTIMESTAMP se aplique). DBTIME2 - 8, 10,.18 (comprimento em caracteres); 0, 1,9 (escala) DBTIMESTAMP – 19, 21,.29 (comprimento em caracteres); 0, 1,9 (escala) DBTIMESTAMPOFFSET - 26, 28..36 (comprimento em caracteres); 0, 1,9 (escala) |
| 12 | A semântica de conversão antes do SQL Server 2008 para DBTYPE_DATE são mantidas. Segundos fracionários são truncados para zero. |
| 13 | A semântica de conversão antes do SQL Server 2008 para DBTYPE_FILETIME são mantidas. Se você usar a API FileTimeToSystemTime do Windows, a precisão de segundos fracionários será limitada a 1 milissegundos. |
| 14 | A semântica de conversão antes do SQL Server 2008 para smalldatetime a qual são mantidas. Segundos são definidos como zero. |
| 15 | A semântica de conversão antes do SQL Server 2008 para datetime a qual são mantidas. Segundos são arredondados para o 300º mais próximo de um segundo. |
| 16 | O comportamento de conversão de um valor (de um determinado tipo) inserido em um struct de cliente SSVARIANT é o mesmo que o comportamento do mesmo valor e tipo quando não inserido em um struct de cliente SSVARIANT. |