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 o SQL Server 2008 (10.0.x) e versões posteriores, e uma aplicação cliente escrita com o Driver OLE DB para SQL Server.
Conversions
A tabela seguinte descreve as conversões entre o tipo devolvido ao cliente e o tipo na ligaçã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, será realizada uma conversão implícita pelo servidor, e o tipo devolvido ao cliente corresponderá ao tipo especificado através de ICommandWithParameters::SetParameterInfo. Isto pode levar a resultados de conversão inesperados quando as regras de conversão do servidor são diferentes das descritas neste artigo. Por exemplo, quando é necessário fornecer uma data padrão, o SQL Server usa 1900-1-1 em vez de 1899-12-30.
| Para-> De |
DATE | DBDATE | DBTIME | DBTIME2 | DBTIMESTAMP | DBTIMESTAMPOFFSET | FILETIME | BYTES | VARIANT | SSVARIANT | BSTR | STR | WSTR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | 1, 7 | OK | - | - | 1 | 1, 3 | 1, 7 | - | OK (VT_BSTR) | OK | OK | 4 | 4 |
| Time | 5, 6, 7 | - | 9 | OK | 6 | 3, 6 | 5, 6 | - | OK (VT_BSTR) | OK | OK | 4 | 4 |
| Smalldatetime | 7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7 (VT_DATE) | OK | OK | 4 | 4 |
| Data e hora | 5, 7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7 (VT_DATE) | OK | OK | 4 | 4 |
| Datetime2 | 5, 7 | 8 | 9, 10 | 10 | 7 | 3 | 5, 7 | - | OK (VT_BSTR) | OK | OK | 4 | 4 |
| Datetimeoffset | 5, 7, 11 | 8, 11 | 9, 10, 11 | 10, 11 | 7, 11 | OK | 5, 7, 11 | - | OK (VT_BSTR) | OK | OK | 4 | 4 |
| Char, Varchar, Nchar, Nvarchar |
7, 13 | 12 | 12, 9 | 12 | 12 | 12 | 7, 13 | N/A | N/A | N/A | N/A | N/A | N/A |
| Sql_variant (data) |
7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7(VT_DATE) | OK | OK | 4 | 4 |
| Sql_variant (pequeno encontro) |
7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7(VT_DATE) | OK | OK | 4 | 4 |
| Sql_variant (data) |
1, 7 | OK | 2 | 2 | 1 | 1, 3 | 1, 7 | - | OK(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (tempo) |
5, 6, 7 | 2 | 6 | OK | 6 | 3, 6 | 5, 6 | - | OK(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (datetime2) |
5, 7 | 8 | 9, 10 | 10 | OK | 3 | 5, 7 | - | OK(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (datatempodesset) |
5, 7, 11 | 8, 11 | 9, 10, 11 | 10, 11 | 7, 11 | OK | 5, 7, 11 | - | OK(VT_BSTR) | OK | OK | 4 | 4 |
Chave dos Símbolos
| Symbol | Meaning |
|---|---|
| OK | Não é necessária conversão. |
| - | 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. |
| 1 | Os campos de tempo estão definidos para zero. |
| 2 | DBSTATUS_E_CANTCONVERTVALUE está definido. |
| 3 | O fuso horário está definido para zero. |
| 4 | Se o buffer do cliente não for suficientemente grande, DBSTATUS_S_TRUNCATED está definido. Quando o tipo de servidor inclui frações de segundo, o número de dígitos na string resultante corresponde exatamente à escala do tipo de servidor. |
| 5 | A truncação de segundos ou frações de segundos é ignorada. |
| 6 | A data é definida para a data atual, a menos que a origem seja um literal de tempo de string e o destino seja DBTYPE_DATE. Neste caso, utiliza-se 1899-12-30. |
| 7 | Se o valor transbordar, DBSTATUS_E_DATAOVERFLOW é definido. |
| 8 | Os campos temporais são ignorados. |
| 9 | Os campos de frações de segundo são ignorados. |
| 10 | O componente de data é ignorado. |
| 11 | A hora é convertida para o fuso horário do cliente. Se ocorrer um erro durante esta conversão DBSTATUS_E_DATAOVERFLOW é definido. |
| 12 | 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. A string deve conformar-se à sintaxe para que os literais do tipo alvo permitam que a análise em formato ISO tenha sucesso. Para que a análise sintática OLE tenha sucesso, a cadeia deve conformar-se à sintaxe reconhecida pelo OLE. Se a cadeia não puder ser analisada, DBSTATUS_E_CANTCONVERTVALUE é definida. Se algum valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW está definido. |
| 13 | 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. A string deve conformar-se à sintaxe dos literais de data-hora, a menos que o destino seja DBTYPE_DATE ou DBTYPE_DBTIMESTAMP. Se for esse o caso, é permitido um literal de data-hora ou de hora para que a análise do formato ISO tenha sucesso. Para que a análise sintática OLE tenha sucesso, a cadeia deve conformar-se à sintaxe reconhecida pelo OLE. Se a cadeia não puder ser analisada, DBSTATUS_E_CANTCONVERTVALUE é definida. Se algum valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW está definido. |