Melhorias de data e hora do SQL Server Native Client

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)

Importante

O 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) herdados não são recomendados para o desenvolvimento de novos aplicativos.

Para novos projetos, use um dos seguintes drivers:

Para SQLNCLI que é fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões 2012 a 2019), confira esta exceção de Ciclo de Vida de Suporte.

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

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

Uso

As seções a seguir descrevem vários modos de usar os novos tipos de dados date e time.

Usar Date como um tipo de dados distinto

A partir do SQL Server 2008 (10.0.x), o suporte aprimorado para tipos de data/hora torna mais eficiente o uso do tipo ODBC SQL_TYPE_DATE (SQL_DATE para aplicativos ODBC 2.0) e do tipo OLE DB DBTYPE_DBDATE.

Usar Time como um tipo de dados distinto

O OLE DB já tem um tipo de dados que apenas contém a hora, DBTYPE_DBTIME, que tem uma precisão de 1 segundo. Em ODBC, o tipo equivalente é SQL_TYPE_TIME (SQL_TIME para aplicativos ODBC 2.0).

O novo tipo de dados temporal do SQL Server tem segundos fracionários precisos até 100 nanossegundos. Isso requer novos tipos no SQL Server Native Client: DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC). Os aplicativos existentes gravados para usar horas sem frações de segundos podem usar colunas time(0). Os tipos DBTYPE_TIME do OLE DB e SQL_TYPE_TIME do ODBC e suas estruturas correspondentes devem funcionar corretamente, a menos que os aplicativos confiem no tipo retornado no metadados.

Usar Time como um tipo de dados distinto com precisão estendida de frações de segundos

Alguns aplicativos, como controle de processo e fabricação, requerem o recurso para controlar dados de hora com uma precisão de até 100 nanossegundos. Os novos tipos para esta finalidade são DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC).

Usar Datetime com precisão estendida de frações de segundos

O OLE DB já define um tipo com uma precisão de até 1 nanossegundo. Porém, este tipo já é usado por aplicativos SQL Server e tais aplicativos têm uma expectativa de apenas 1/300 de uma segunda precisão. O novo tipo datetime2(3) não é diretamente compatível com o tipo datetime existente. Se houver um risco que isto afetará o comportamento do aplicativo, os aplicativos deverão usar um novo sinalizador DBCOLUMN para determinar o tipo de servidor real.

O ODBC também define um tipo com uma precisão de até 1 nanossegundo. No entanto, esse tipo já é usado por aplicativos existentes do SQL Server e esses aplicativos esperam apenas uma precisão de 3 milissegundos. O novo tipo datetime2(3) não é diretamente compatível com o tipo datetime existente. datetime2(3) tem uma precisão de um milissegundo e datetime tem uma precisão de 1/300 de segundo. No ODBC, os aplicativos podem determinar qual tipo de servidor está em uso com o campo do descritor SQL_DESC_TYPE_NAME. Portanto, o tipo existente SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP para aplicativos ODBC 2.0) pode ser usado para ambos os tipos.

Usar Datetime com precisão estendida de frações de segundos e fuso horário

Alguns aplicativos exigem valores de datetime com informações de fuso horário. Isto é aceito pelos novos tipos DBTYPE_DBTIMESTAMPOFFSET (OLE DB) e SQL_SS_TIMESTAMPOFFSET (ODBC).

Usar os dados Date/Time/Datetime/Datetimeoffset com conversões do lado do cliente consistentes com as conversões existentes

O padrão de ODBC descreve como conversões entre os tipos existentes de data, hora e carimbo de data/hora funcionam. Eles são estendidos de maneira consistente para incluir conversões entre todos os tipos de data e hora introduzidos no SQL Server 2008 (10.0.x).

Confira também

Recursos do SQL Server Native Client