Compartilhar via


Conversões executadas do servidor para o cliente

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Baixar o driver do OLE DB

Este artigo descreve as conversões de data/hora executadas entre o SQL Server 2008 (10.0.x) e versões posteriores e um aplicativo cliente escrito com o Driver do OLE DB para SQL Server.

Conversões

A tabela a seguir descreve conversões entre o tipo retornado para o 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, será executada uma conversão implícita pelo servidor, e o tipo retornado para o cliente corresponderá ao tipo especificado por meio de ICommandWithParameters::SetParameterInfo. Isto pode levar a resultados de conversão inesperados quando as regras de conversão do servidor são diferentes daquelas descritas neste artigo. Por exemplo, quando é necessário fornecer uma data padrão, o SQL Server usa 1/1/1900 em vez de 30/12/1899.

Até ->

De
DATE DBDATE DBTIME DBTIME2 DBTIMESTAMP DBTIMESTAMPOFFSET FILETIME BYTES VARIANT SSVARIANT BSTR STR WSTR
Data 1, 7 OK - - 1 1, 3 1, 7 - OK (VT_BSTR) OK OK 4 4
Hora 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
Datetime 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/D N/D N/D N/D N/D N/D
Sql_variant

(datetime)
7 8 9, 10 10 OK 3 7 - 7(VT_DATE) OK OK 4 4
Sql_variant

(smalldatetime)
7 8 9, 10 10 OK 3 7 - 7(VT_DATE) OK OK 4 4
Sql_variant

(date)
1, 7 OK 2 2 1 1, 3 1, 7 - OK(VT_BSTR) OK OK 4 4
Sql_variant

(time)
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

(datetimeoffset)
5, 7, 11 8, 11 9, 10, 11 10, 11 7, 11 OK 5, 7, 11 - OK(VT_BSTR) OK OK 4 4

Legenda dos símbolos

Símbolo Significado
OK 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 de acessador for adiada, DBSTATUS_E_BADACCESSOR será definido.
1 Os campos de hora são definidos como zero.
2 DBSTATUS_E_CANTCONVERTVALUE é definido.
3 O fuso horário é definido como zero.
4 Se o buffer do cliente não suficientemente grande, DBSTATUS_S_TRUNCATED será definido. Quando o tipo de servidor inclui frações de segundo, 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 de frações de segundo é ignorado.
6 A data é definida como a data atual, a menos que a origem seja uma literal de hora da cadeia de caracteres e o destino seja DBTYPE_DATE. Nesse caso, será usado 30/12/1899.
7 Se o valor alagar, DBSTATUS_E_DATAOVERFLOW será definido.
8 Os campos de hora 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 essa conversão, DBSTATUS_E_DATAOVERFLOW será definido.
12 A cadeia de caracteres é analisada como um literal ISO e convertida para o tipo de destino. Se houver falha, 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 deverá se conformar com a sintaxe para literais do tipo de destino permitido para que a análise do formato ISO tenha êxito. Para que a análise de OLE tenha êxito, a cadeia de caracteres deve se conformar com a sintaxe reconhecida pelo OLE. Se não for possível analisar a cadeia de caracteres, DBSTATUS_E_CANTCONVERTVALUE será definido. Se qualquer valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW será definido.
13 A cadeia de caracteres é analisada como um literal ISO e convertida para o tipo de destino. Se houver falha, 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 se conformar com a sintaxe de literais datetime, a menos que o destino seja DBTYPE_DATE ou DBTYPE_DBTIMESTAMP. Se for o caso, um literal datetime ou time será permitido para que a análise de formato ISO tenha êxito. Para que a análise de OLE tenha êxito, a cadeia de caracteres deve se conformar com a sintaxe reconhecida pelo OLE. Se não for possível analisar a cadeia de caracteres, DBSTATUS_E_CANTCONVERTVALUE será definido. Se qualquer valor de componente estiver fora do intervalo, DBSTATUS_E_DATAOVERFLOW será definido.

Consulte Também

Associações e conversões (OLE DB)