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 o SQL Server 2008 (ou posterior) e um aplicativo cliente escrito com o SQL Server Native Client OLE DB.
Conversões
A tabela a seguir descreve as conversões entre o tipo retornado ao cliente e o tipo na associação. Para parâmetros de saída, se ICommandWithParameters::SetParameterInfo tiver sido chamado e o tipo especificado em pwszDataSourceType não corresponder ao tipo real no servidor, uma conversão implícita será executada pelo servidor e o tipo retornado ao cliente corresponderá ao tipo especificado por meio de ICommandWithParameters::SetParameterInfo. Isso pode levar a resultados de conversão inesperados quando as regras de conversão do servidor são diferentes daquelas descritas neste tópico. Por exemplo, quando uma data padrão deve ser fornecida, o SQL Server usa 1900-1-1 em vez de 1899-12-30.
| Para-> De |
DATA | DBDATE | DBTIME | DBTIME2 | DBTIMESTAMP | DBTIMESTAMPOFFSET | FILETIME | BYTES | VARIANTE | SSVARIANT | BSTR | STR | WSTR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Data (calendário) | 1,7 | OKEY | - | - | 1 | 1,3 | 1,7 | - | OK (VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Hora | 5,6,7 | - | 9 | OKEY | 6 | 3,6 | 5,6 | - | OK (VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Smalldatetime | 7 | oito | 9,10 | 10 | OKEY | 3 | 7 | - | 7 (VT_DATE) | OKEY | OKEY | 4 | 4 |
| Data e hora | 5,7 | oito | 9,10 | 10 | OKEY | 3 | 7 | - | 7 (VT_DATE) | OKEY | OKEY | 4 | 4 |
| Datetime2 | 5,7 | oito | 9,10 | 10 | 7 | 3 | 5,7 | - | OK (VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Datetimeoffset | 5,7,11 | 8,11 | 9,10,11 | 10,11 | 7,11 | OKEY | 5,7,11 | - | OK (VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Char, Varchar, Nchar |
7, 13 | 12 | 12,9 | 12 | 12 | 12 | 7,13 | Não aplicável | Não aplicável | Não aplicável | Não aplicável | Não aplicável | Não aplicável |
| Sql_variant (datetime) |
7 | oito | 9,10 | 10 | OKEY | 3 | 7 | - | 7(VT_DATE) | OKEY | OKEY | 4 | 4 |
| Sql_variant (smalldatetime) |
7 | oito | 9,10 | 10 | OKEY | 3 | 7 | - | 7(VT_DATE) | OKEY | OKEY | 4 | 4 |
| Sql_variant (data) |
1,7 | OKEY | 2 | 2 | 1 | 1,3 | 1,7 | - | OK(VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Sql_variant (hora) |
5,6,7 | 2 | 6 | OKEY | 6 | 3,6 | 5,6 | - | OK(VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Sql_variant (datetime2) |
5,7 | oito | 9,10 | 10 | OKEY | 3 | 5,7 | - | OK(VT_BSTR) | OKEY | OKEY | 4 | 4 |
| Sql_variant (datetimeoffset) |
5,7,11 | 8,11 | 9,10,11 | 10,11 | 7,11 | OKEY | 5,7,11 | - | OK(VT_BSTR) | OKEY | OKEY | 4 | 4 |
Legenda dos símbolos
| Símbolo | Significado |
|---|---|
| OKEY | Nenhuma conversão é necessária. |
| - | 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. |
| 1 | Os campos de tempo são definidos como zero. |
| 2 | DBSTATUS_E_CANTCONVERTVALUE está definido. |
| 3 | O fuso horário está definido como zero. |
| 4 | Se o buffer do cliente não for grande o suficiente, DBSTATUS_S_TRUNCATED será definido. Quando o tipo de servidor inclui segundos fracionários, o número de dígitos na cadeia de caracteres de resultado corresponde exatamente à escala do tipo de servidor. |
| 5 | O truncamento de segundos ou segundos fracionários é ignorado. |
| 6 | A data é definida como a data atual, a menos que a origem seja um literal de hora de cadeia de caracteres e o destino seja DBTYPE_DATE. Nesse caso, 1899-12-30 é usado. |
| 7 | Se o valor estourar, DBSTATUS_E_DATAOVERFLOW será definido. |
| oito | Os campos de tempo são ignorados. |
| 9 | Os campos de segundos fracionários são ignorados. |
| 10 | O componente de data é ignorado. |
| 11 | A hora é convertida no fuso horário do cliente. Se ocorrer um erro durante essa conversão, DBSTATUS_E_DATAOVERFLOW será definido. |
| 12 | 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. A cadeia de caracteres deve estar em conformidade com a sintaxe de literais do tipo de destino permitido para que a análise de formato ISO seja bem-sucedida. Para que a análise OLE seja bem-sucedida, a cadeia de caracteres deve estar em conformidade com a sintaxe reconhecida pelo OLE. Se a cadeia de caracteres não puder ser analisada, DBSTATUS_E_CANTCONVERTVALUE será definida. Se algum valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW será definido. |
| 13 | 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. A cadeia de caracteres deve estar em conformidade com a sintaxe para literais datetime, a menos que o destino seja DBTYPE_DATE ou DBTYPE_DBTIMESTAMP. Se esse for o caso, um literal de data ou hora será permitido para que a análise de formato ISO seja bem-sucedida. Para que a análise OLE seja bem-sucedida, a cadeia de caracteres deve estar em conformidade com a sintaxe reconhecida pelo OLE. Se a cadeia de caracteres não puder ser analisada, DBSTATUS_E_CANTCONVERTVALUE será definida. Se algum valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW será definido. |