Compartir a través de


Tipos de datos de fecha y hora

En ODBC 3.x, los identificadores para los tipos de datos SQL de fecha, hora y marca de tiempo han cambiado de SQL_DATE, SQL_TIME y SQL_TIMESTAMP (con instancias de #define en el archivo de encabezado de 9, 10 y 11) a SQL_TYPE_DATE, SQL_TYPE_TIME y SQL_TYPE_TIMESTAMP (con instancias de #define en el archivo de encabezado de 91, 92 y 93), respectivamente. Los identificadores de tipo C correspondientes han cambiado de SQL_C_DATE, SQL_C_TIME y SQL_C_TIMESTAMP a SQL_C_TYPE_DATE, SQL_C_TYPE_TIME y SQL_C_TYPE_TIMESTAMP, respectivamente, y las instancias de #define han cambiado en consecuencia.

El tamaño de columna y los dígitos decimales devueltos para los tipos de datos de fecha y hora SQL en ODBC 3.x son los mismos que la precisión y la escala devueltas para ellos en ODBC 2.x. Estos valores son diferentes de los valores de los campos del descriptor SQL_DESC_PRECISION y SQL_DESC_SCALE. (Para obtener más información, consulte Tamaño de columna, dígitos decimales, longitud de octeto de transferencia y tamaño de visualización en el apéndice D: Tipos de datos).

Estos cambios afectan a SQLDescribeCol, SQLDescribeParam y SQLColAttributes; SQLBindCol, SQLBindParameter y SQLGetData; y SQLColumns, SQLGetTypeInfo, SQLProcedureColumns, SQLStatistics y SQLSpecialColumns.

Un controlador ODBC 3.x procesa las llamadas de función enumeradas en el párrafo anterior según la configuración del atributo de entorno de SQL_ATTR_ODBC_VERSION. Para SQLColumns, SQLGetTypeInfo, SQLProcedureColumns, SQLSpecialColumns y SQLStatistics, si SQL_ATTR_ODBC_VERSION está establecido en SQL_OV_ODBC3, las funciones devuelven SQL_TYPE_DATE, SQL_TYPE_TIME y SQL_TYPE_TIMESTAMP en el campo DATA_TYPE. La columna COLUMN_SIZE (en el conjunto de resultados devuelto por SQLColumns, SQLGetTypeInfo, SQLProcedureColumns y SQLSpecialColumns) contiene la precisión binaria para el tipo numérico aproximado. Si SQL_ATTR_ODBC_VERSION se establece en SQL_OV_ODBC2, las funciones devuelven SQL_DATE, SQL_TIME y SQL_TIMESTAMP en el campo DATA_TYPE y la columna COLUMN_SIZE contiene la precisión decimal para el tipo numérico aproximado.

Cuando se solicitan todos los tipos de datos en una llamada a SQLGetTypeInfo, el conjunto de resultados devuelto por la función contendrá tanto SQL_TYPE_DATE, SQL_TYPE_TIME y SQL_TYPE_TIMESTAMP como se define en ODBC 3.x y SQL_DATE, SQL_TIME y SQL_TIMESTAMP tal como se define en ODBC 2.x.

Debido a cómo el Administrador de controladores ODBC 3.x realiza la asignación de los tipos de datos de fecha, hora y marca de tiempo, los controladores ODBC 3.x solo necesitan reconocer #defines de 91, 92 y 93 para los tipos de datos de fecha, hora y marca de tiempo C especificados en los argumentos TargetType de SQLBindCol y SQLGetData o el argumento ValueType de SQLBindParameter, y solo necesitan reconocer #defines de 91, 92 y 93 para los tipos de datos SQL de fecha, hora y marca de tiempo especificados en el argumento ParameterType de SQLBindParameter o el argumento DataType de SQLGetTypeInfo. Para obtener más información, vea Cambios de tipo de datos datetime.