Partilhar via


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

Esta seção discute como converter entre valores e datetimeoffset valoresdatetime. As conversões descritas nesta seção já são fornecidas pelo OLE DB ou são uma extensão consistente do OLE DB.

O formato de literais e cadeias de caracteres para datas e horas no OLE DB geralmente segue ISO e não depende da localidade do cliente. Uma exceção é DBTYPE_DATE, em que o padrão é a Automação OLE. No entanto, como o SQL Server Native Client converte apenas entre tipos quando os dados são transmitidos para ou do cliente, não há como um aplicativo forçar o SQL Server Native Client a converter entre formatos de cadeia de caracteres e DBTYPE_DATE. Caso contrário, as cadeias de caracteres usam os seguintes formatos (texto entre colchetes indica um elemento opcional):

  • O formato e datetimeoffset as cadeias de datetime caracteres são:

    yyyyy-milímetro-dd[ hh:mm:ss[.9999999][ ?? hh:mm]]

  • O formato das cadeias de time caracteres é:

    hh:mm:ss[.9999999]

  • O formato das cadeias de date caracteres é:

    yyyyy-milímetro-Dd

Observação

As versões anteriores do SQL Server Native Client e do SQLOLEDB implementaram conversões OLE, caso as conversões padrão falharam. Como resultado, algumas conversões executadas pelo SQL Server Native Client 10.0 e posterior diferem da especificação OLE DB.

As conversões de cadeias de caracteres permitem flexibilidade no espaço em branco e na largura do campo. Para obter mais informações, consulte a seção "Formatos de dados: cadeias de caracteres e literais" no suporte a tipos de dados para melhorias de data e hora do OLE DB.

Veja a seguir as regras gerais de conversão:

  • Quando uma cadeia de caracteres é convertida em um tipo de data/hora, a cadeia de caracteres é analisada pela primeira vez como um literal ISO. Se isso falhar, a cadeia de caracteres será analisada como um literal de data OLE, que tem componentes de hora.

  • Se não houver tempo, mas o receptor puder armazenar a hora, a hora será definida como zero. Se nenhuma data estiver presente, mas o receptor puder armazenar uma data, a data será definida como a data atual em que as conversões ISO são usadas e para 1899-12-30 quando as conversões OLE forem usadas.

  • Se nenhum fuso horário estiver presente no tipo de dados que o cliente está usando, mas o servidor puder armazenar fuso horário, os dados no cliente serão considerados no fuso horário do cliente.

  • Se nenhum fuso horário estiver presente no servidor, mas o cliente tiver informações de fuso horário, o fuso horário UTC será assumido. Isso difere do comportamento do servidor.

  • Se a hora estiver presente, mas o receptor não puder armazenar a hora, o componente de hora será ignorado.

  • Se a data estiver presente, mas o receptor não puder armazenar a data, o componente de data será ignorado.

  • Se ocorrer truncamento de segundos ou segundos fracionários ao converter de cliente para servidor, DB_E_ERRORSOCCURRED será retornado e o status DBSTATUS_E_DATAOVERFLOW será definido.

  • Se ocorrer truncamento de segundos ou segundos fracionários ao converter de servidor para cliente, DBSTATUS_S_TRUNCATED será definido

Nesta seção

Conversões executadas de cliente para servidor
Descreve as 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 executadas de servidor para cliente
Descreve as 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.

Consulte Também

Melhorias de data e hora (OLE DB)