melhorias de data e hora do SQL Server Native Client

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Importante

O SQL Server Native Client (geralmente abreviado como SNAC) foi removido do SQL Server 2022 (16.x) e do SSMS (SQL Server Management Studio) 19. O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Provedor OLE DB herdado da Microsoft para o SQL Server (SQLOLEDB) não são recomendados para um novo desenvolvimento de aplicativo. Alterne para o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL) ou o Microsoft ODBC Driver for SQL Server mais recente no futuro. Para SQLNCLI que é fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões 2012 a 2019), consulte esta exceção de Ciclo de Vida de Suporte.

Este tópico descreve o suporte 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 ODBC (aprimoramentos de data e hora)..

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 usar o tipo ODBC SQL_TYPE_DATE (SQL_DATE para aplicativos ODBC 2.0) e o 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 SQL Server existentes e esses aplicativos esperam apenas 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).

Consulte Também

Recursos do SQL Server Native Client