Melhorias de Data e Hora do Cliente Nativo SQL Server

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)

Importante

SQL Server Native Client (SNAC) não é fornecido com:

  • SQL Server 2022 (16.x) e versões posteriores
  • SQL Server Management Studio 19 e versões posteriores

O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Microsoft OLE DB Provider for SQL Server (SQLOLEDB) herdado não são recomendados para o desenvolvimento de novos aplicativos.

Para novos projetos, use um dos seguintes drivers:

Para o SQLNCLI fornecido como componente do Mecanismo de Base de Dados do SQL Server (versões de 2012 a 2019), consulte esta exceção ao Ciclo de Vida de Suporte .

Este tópico descreve o suporte ao Cliente Nativo do SQL Server para os tipos de dados de data e hora que foram adicionados no SQL Server 2008 (10.0.x).

Para mais informações sobre melhorias de data/hora, consulte Melhorias de Data e Hora (OLE DB) e Melhorias de Data e Hora (ODBC).

Usage

As secções seguintes descrevem várias formas de utilizar os novos tipos de data e hora.

Usar Data como Tipo de Dado Distinto

A partir de SQL Server 2008 (10.0.x), o suporte melhorado para tipos de data/hora torna mais eficiente a utilização do tipo ODBC SQL_TYPE_DATE (SQL_DATE para aplicações ODBC 2.0) e do tipo DBTYPE_DBDATE OLE DB.

Usar o tempo como um tipo de dado distinto

O OLE DB já tem um tipo de dado que contém apenas o tempo, DBTYPE_DBTIME, que tem uma precisão de 1 segundo. No ODBC, o tipo equivalente é SQL_TYPE_TIME (SQL_TIME para aplicações ODBC 2.0).

O novo tipo de data de tempo do SQL Server tem frações de segundo de precisão até 100 nanossegundos. Isto requer novos tipos em SQL Server Cliente Nativo: DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC). Aplicações existentes escritas para usar tempos sem frações de segundo podem usar colunas de tempo(0). Os tipos SQL_TYPE_TIME DBTYPE_TIME OLE DB e ODBC existentes e as respetivas estruturas devem funcionar corretamente, a menos que as aplicações dependam do tipo devolvido nos metadados.

Use o tempo como um tipo de dado distinto com precisão de frações de segundo estendido

Algumas aplicações, como o controlo de processos e as aplicações de fabrico, exigem a capacidade de lidar com dados temporais com uma precisão de até 100 nanossegundos. Novos tipos para este fim são DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC).

Use a Data-Hora com Precisão Estendida em Frações de Segundo

O OLE DB já define um tipo com precisão de até 1 nanossegundo. No entanto, este tipo já é utilizado por aplicações SQL Server existentes e tais aplicações têm uma expectativa de precisão de apenas 1/300 de segundo. O novo tipo datetime2(3) não é diretamente compatível com o tipo de data-hora existente. Se houver risco de que isto afete o comportamento das aplicações, as aplicações devem usar uma nova bandeira de coluna de dados para determinar o tipo real de servidor.

O ODBC também define um tipo com uma precisão de até 1 nanossegundo. No entanto, este tipo já é utilizado por aplicações SQL Server existentes e tais aplicações exigem apenas uma precisão de 3 milissegundos. O novo tipo datetime2(3) não é diretamente compatível com o tipo de data-hora existente. datetime2(3) tem uma precisão de um milissegundo, e datetime tem uma precisão de 1/300 de segundo. No ODBC, as aplicações podem determinar que tipo de servidor está em uso com o campo descritor SQL_DESC_TYPE_NAME. Assim, o tipo SQL_TYPE_TIMESTAMP existente (SQL_TIMESTAMP para aplicações ODBC 2.0) pode ser usado para ambos os tipos.

Usar Data-Hora com Precisão e Fuso Temporal Estendidos

Algumas aplicações requerem valores de data-hora com a informação do fuso horário. Isto é suportado pelos novos tipos DBTYPE_DBTIMESTAMPOFFSET (OLE DB) e SQL_SS_TIMESTAMPOFFSET (ODBC).

Use dados de Data/Hora/Data/Hora/Datatimeoffset com Client-Side Conversões Consistentes com Conversões Existentes

A norma ODBC descreve como funcionam as conversões entre tipos existentes de data, hora e carimbo temporal. Estes são estendidos de forma consistente para incluir conversões entre todos os tipos de data e hora introduzidos no SQL Server 2008 (10.0.x).