Бөлісу құралы:


Типы данных даты и времени

В ODBC 3.x идентификаторы для типов данных даты, времени и метки времени SQL изменились с SQL_DATE, SQL_TIME и SQL_TIMESTAMP (с экземплярами #define в файле заголовка 9, 10 и 11) на SQL_TYPE_DATE, SQL_TYPE_TIME и SQL_TYPE_TIMESTAMP (с экземплярами #define в файле заголовка 91, 92 и 93) соответственно. Соответствующие идентификаторы типов C изменились с SQL_C_DATE, SQL_C_TIME и SQL_C_TIMESTAMP на SQL_C_TYPE_DATE, SQL_C_TYPE_TIME и SQL_C_TYPE_TIMESTAMP соответственно, а экземпляры #define изменились соответствующим образом.

Размер столбца и десятичные цифры, возвращаемые для типов данных даты и времени SQL в ODBC 3.x, совпадают с точностью и масштабированием, возвращаемыми для них в ODBC 2.x. Эти значения отличаются от значений в полях дескриптора SQL_DESC_PRECISION и SQL_DESC_SCALE. (Дополнительные сведения см. в разделе Размер столбца, десятичные цифры, длина октета и размер отображения в приложении D: Типы данных.)

Эти изменения влияют на SQLDescribeCol, SQLDescribeParam и SQLColAttributes; SQLBindCol, SQLBindParameter и SQLGetData; и SQLColumns, SQLGetTypeInfo, SQLProcedureColumns, SQLStatistics и SQLSpecialColumns.

Драйвер ODBC 3.x обрабатывает вызовы функции, перечисленные в предыдущем абзаце в соответствии с параметром атрибута среды SQL_ATTR_ODBC_VERSION. Для SQLColumns, SQLGetTypeInfo, SQLProcedureColumns, SQLSpecialColumns и SQLStatistics, если SQL_ATTR_ODBC_VERSION задано значение SQL_OV_ODBC3, функции возвращают SQL_TYPE_DATE, SQL_TYPE_TIME и SQL_TYPE_TIMESTAMP в поле DATA_TYPE. Столбец COLUMN_SIZE (в результирующем наборе, возвращаемом SQLColumns, SQLGetTypeInfo, SQLProcedureColumns и SQLSpecialColumns) содержит двоичную точность для приблизительного числового типа. Если SQL_ATTR_ODBC_VERSION задано значение SQL_OV_ODBC2, функции возвращают SQL_DATE, SQL_TIME и SQL_TIMESTAMP в поле DATA_TYPE, а столбец COLUMN_SIZE содержит десятичную точность для приблизительного числового типа.

Когда все типы данных запрашиваются при вызове SQLGetTypeInfo, результирующий набор, возвращаемый функцией, будет содержать как SQL_TYPE_DATE, SQL_TYPE_TIME, так и SQL_TYPE_TIMESTAMP, как определено в ODBC 3.x, и SQL_DATE, SQL_TIME и SQL_TIMESTAMP, как определено в ODBC 2.x.

Из-за того, как диспетчер драйверов ODBC 3.x выполняет сопоставление типов данных даты, времени и метки времени, драйверы ODBC 3.x должны распознавать только #defines 91, 92 и 93 для типов данных даты, времени и метки времени C, введенных в аргументы TargetType SQLBindCol и SQLGetData или аргумент ValueType SQLBindParameter, и необходимо распознать только #defines 91, 92 и 93 для типов данных SQL даты, времени и метки времени, введенных в аргументе ParameterType SQLBindParameter или аргументе DataType sqlGetTypeInfo. Дополнительные сведения см. в разделе "Изменения типа данных Datetime".