Partilhar via


Alterações de Tipo de Dados de Data e Hora

No ODBC 3.x, os identificadores para os tipos de dados SQL data, hora e carimbo temporal mudaram de SQL_DATE, SQL_TIME e SQL_TIMESTAMP (com instâncias de #define no ficheiro de cabeçalho 9, 10 e 11) para SQL_TYPE_DATE, SQL_TYPE_TIME e SQL_TYPE_TIMESTAMP (com instâncias de #define no ficheiro de cabeçalho 91, 92 e 93), respetivamente. Os identificadores correspondentes do tipo C mudaram de SQL_C_DATE, SQL_C_TIME e SQL_C_TIMESTAMP para SQL_C_TYPE_DATE, SQL_C_TYPE_TIME e SQL_C_TYPE_TIMESTAMP, respetivamente.

O tamanho da coluna e os dígitos decimais retornados para os tipos de dados de data e hora SQL no ODBC 3.x são iguais à precisão e escala retornadas para eles no ODBC 2.x. Estes valores são diferentes dos valores nos campos descritivos SQL_DESC_PRECISION e SQL_DESC_SCALE. (Para mais informações, veja Tamanho da Coluna, Dígitos Decimais, Comprimento do Octeto de Transferência e Tamanho do Ecrã.)

Estas alterações afetam SQLDescribeCol, SQLDescribeParam e SQLColAttribute; SQLBindCol, SQLBindParameter e SQLGetData; e SQLColumns, SQLGetTypeInfo, SQLProcedureColumns, SQLStatistics e SQLSpecialColumns.

A tabela seguinte mostra como o ODBC 3.x Driver Manager realiza o mapeamento dos tipos de dados C de data, hora e carimbo de data/hora introduzidos nos argumentos TargetType do SQLBindCol e SQLGetData ou no argumento ValueType do SQLBindParameter.

Tipo de dados

Código introduzido
2.x aplicação para

Driver 2.x
2.x aplicação para

Driver 3.x
3.x aplicação para

Driver 2.x
3.x aplicação para

Driver 3.x
SQL_C_DATE (9) Sem mapeamento SQL_C_TYPE_DATE (91) Sem mapeamento[1] SQL_C_TYPE_DATE (91)
SQL_C_TYPE_DATE (91) Erro (da Mensagem Direta) Erro (do DM) SQL_C_DATE (9) Sem mapeamento[2]
SQL_C_TIME (10) Sem mapeamento SQL_C_TYPE_TIME (92) Sem mapeamento[1] SQL_C_TYPE_TIME (92)
SQL_C_TYPE_TIME (92) Erro (do DM) Erro (do DM) SQL_C_TIME (10) Sem mapeamento[2]
SQL_C_TIMESTAMP (11) Sem mapeamento SQL_C_TYPE_TIMESTAMP (93) Sem mapeamento[1] SQL_C_TYPE_TIMESTAMP (93)
SQL_C_TYPE_TIMESTAMP (93) Erro (do DM) Erro (do DM) SQL_C_TIMESTAMP (11) Sem mapeamento[2]

[1] Como resultado disto, uma aplicação ODBC 3.x a trabalhar com um driver ODBC 2.x pode usar os códigos de data, hora ou carimbo temporal devolvidos nos conjuntos de resultados que são devolvidos pelas funções do catálogo.

[2] Como resultado disto, uma aplicação ODBC 3.x a trabalhar com um driver ODBC 3.x pode usar os códigos de data, hora ou carimbo temporal devolvidos nos conjuntos de resultados que são devolvidos pelas funções do catálogo.

A tabela seguinte mostra como o ODBC 3.x Driver Manager realiza o mapeamento dos tipos de dados SQL de data, hora e hora introduzidos no argumento ParameterType do SQLBindParameter ou no argumento DataType do SQLGetTypeInfo.

Tipo de dados

Código introduzido
2.x aplicação para

Driver 2.x
2.x aplicação para

Driver 3.x
3.x aplicação para

Driver 2.x
3.x aplicação para

Driver 3.x
SQL_DATE (9) Sem mapeamento SQL_TYPE_DATE (91) Sem mapeamento[1] SQL_TYPE_DATE (91)
SQL_TYPE_DATE (91) Erro (do DM) Erro (do DM) SQL_DATE (9) Sem mapeamento[2]
SQL_TIME (10) Sem mapeamento SQL_TYPE_TIME (92) Sem mapeamento[1] SQL_TYPE_TIME (92)
SQL_TYPE_TIME (92) Erro (do DM) Erro (do DM) SQL_TIME (10) Sem mapeamento[2]
SQL_TIMESTAMP (11) Sem mapeamento SQL_TYPE_TIMESTAMP (93) Sem mapeamento[1] SQL_TYPE_TIMESTAMP (93)
SQL_TYPE_TIMESTAMP (93) Erro (do DM) Erro (do DM) SQL_TIMESTAMP (11) Sem mapeamento[2]

[1] Como resultado disto, uma aplicação ODBC 3.x a trabalhar com um driver ODBC 2.x pode usar os códigos de data, hora ou carimbo temporal devolvidos nos conjuntos de resultados que são devolvidos pelas funções do catálogo.

[2] Como resultado disto, uma aplicação ODBC 3.x a trabalhar com um driver ODBC 3.x pode usar os códigos de data, hora ou carimbo temporal devolvidos nos conjuntos de resultados que são devolvidos pelas funções do catálogo.