Conversões de cliente nativo do SQL Server (OLE DB)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics
A seção descreve como converter valores entre os tipos datetime e datetimeoffset. 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 a norma ISO e não depende da localidade do cliente. Uma exceção é DBTYPE_DATE, em que o padrão é Automação OLE. No entanto, como o SQL Server Native Client só converte entre tipos quando os dados são transmitidos de ou para o cliente, não há como um aplicativo forçar o SQL Server Native Client a converter entre os formatos DBTYPE_DATE e de cadeia de caracteres. Caso contrário, as cadeias de caracteres usam os formatos a seguir (texto entre colchetes indica um elemento opcional):
O formato das cadeias de caracteres de datetime e datetimeoffset é:
yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]
O formato de cadeias de caracteres time é:
hh:mm:ss[.9999999]
O formato das cadeias de caracteres de date é:
yyyy-mm-dd
Observação
As versões anteriores do SQL Server Native Client e SQLOLEDB implementavam conversões OLE, caso em que conversões padrão falhavam. 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 uma flexibilidade nos espaços em branco e na largura dos campos. Para obter mais informações, confira a seção "Formatos de dados: cadeias de caracteres e literais" em Suporte a tipo de dados para aprimoramentos de data e hora do OLE DB.
Seguem as regras de conversão gerais:
Quando uma cadeia de caracteres é convertida em um tipo de data/hora, a cadeia de caracteres é analisada primeiro como um literal ISO. Se esse procedimento falhar, a cadeia de caracteres será analisada como um literal de data OLE, que tem componentes de hora.
Se não houver uma hora mas o receptor puder armazenar horas, a hora será definida como zero. Se não houver uma data mas o receptor puder armazenar datas, a data será definida como a data atual quando conversões ISO forem usadas e como 1899-12-30 quando conversões OLE forem usadas.
Se não houver um fuso horário no tipo de dados que o cliente está utilizando mas o servidor puder armazenar fusos horários, a data no cliente será assumida como o fuso horário do cliente.
Se não houver nenhum fuso horário no servidor mas o cliente tiver informações de fusos horários, o fuso horário de UTC será assumido. Esse é um comportamento diferente daquele do servidor.
Se houver uma hora mas o receptor não puder armazenar horas, o componente de hora será ignorado.
Se houver uma data mas o receptor não puder armazenar datas, o componente de data será ignorado.
Se ocorrer o truncamento de segundos ou segundos fracionários ao converter de cliente em servidor, DB_E_ERRORSOCCURRED será retornado e o status DBSTATUS_E_DATAOVERFLOW será definido.
Se ocorrer o truncamento de segundos ou segundos fracionários ao converter de servidor em cliente, DBSTATUS_S_TRUNCATED será definido.
Nesta seção
Conversões executadas do cliente para o servidor
Descreve as conversões de data/hora executadas entre um aplicativo cliente escrito com o OLE DB do SQL Server Native Client e o SQL Server 2008 (10.0.x) (ou posterior).
Conversões executadas do servidor para o cliente
Descreve as conversões de data/hora executadas entre o SQL Server 2008 (10.0.x) (ou posterior) e um aplicativo cliente escrito com o OLE DB do SQL Server Native Client.