Melhorias de data e hora
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.
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)..
Para obter informações sobre aplicativos de exemplo que demonstram esse recurso, confira Amostras de programação do SQL Server Data.
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, 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 do 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 datetime2(3)
tipo não é diretamente compatível com o tipo existente datetime
. datetime2(3)
tem uma precisão de um milissegundo e datetime
tem uma precisão de 1/300 de um 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.