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


Изменения в типе данных Datetime

В 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 соответственно.

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

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

В следующей таблице показано, как диспетчер драйверов ODBC 3.x выполняет сопоставление типов данных даты, времени и метки времени C, введенных в аргументы TargetType SQLBindCol и SQLGetData или в аргументе ValueType SQLBindParameter.

Тип данных

Введенный код
Приложение 2.x в

Драйвер 2.x
Приложение 2.x в

Драйвер 3.x
3.x для приложения

Драйвер 2.x
3.x для приложения

Драйвер 3.x
SQL_C_DATE (9) Нет сопоставления SQL_C_TYPE_DATE (91) Нет сопоставления[1] SQL_C_TYPE_DATE (91)
SQL_C_TYPE_DATE (91) Ошибка (из DM) Ошибка (из DM) SQL_C_DATE (9) Нет сопоставления[2]
SQL_C_TIME (10) Нет сопоставления SQL_C_TYPE_TIME (92) Нет сопоставления[1] SQL_C_TYPE_TIME (92)
SQL_C_TYPE_TIME (92) Ошибка (из DM) Ошибка (из DM) SQL_C_TIME (10) Нет сопоставления[2]
SQL_C_TIMESTAMP (11) Нет сопоставления SQL_C_TYPE_TIMESTAMP (93) Нет сопоставления[1] SQL_C_TYPE_TIMESTAMP (93)
SQL_C_TYPE_TIMESTAMP (93) Ошибка (из DM) Ошибка (из DM) SQL_C_TIMESTAMP (11) Нет сопоставления[2]

[1] В результате этого приложение ODBC 3.x, работающее с драйвером ODBC 2.x, может использовать коды даты, времени или метки времени, возвращаемые в результирующих наборах, возвращаемых функциями каталога.

[2] В результате этого приложение ODBC 3.x, работающее с драйвером ODBC 3.x, может использовать коды даты, времени или метки времени, возвращаемые в результирующих наборах, возвращаемых функциями каталога.

В следующей таблице показано, как диспетчер драйверов ODBC 3.x выполняет сопоставление типов данных SQL даты, времени и метки времени, введенных в аргументе ParameterType SQLBindParameter или в аргументе DataType в SQLGetTypeInfo.

Тип данных

Введенный код
Приложение 2.x в

Драйвер 2.x
Приложение 2.x в

Драйвер 3.x
3.x для приложения

Драйвер 2.x
3.x для приложения

Драйвер 3.x
SQL_DATE (9) Нет сопоставления SQL_TYPE_DATE (91) Нет сопоставления[1] SQL_TYPE_DATE (91)
SQL_TYPE_DATE (91) Ошибка (из DM) Ошибка (из DM) SQL_DATE (9) Нет сопоставления[2]
SQL_TIME (10) Нет сопоставления SQL_TYPE_TIME (92) Нет сопоставления[1] SQL_TYPE_TIME (92)
SQL_TYPE_TIME (92) Ошибка (из DM) Ошибка (из DM) SQL_TIME (10) Нет сопоставления[2]
SQL_TIMESTAMP (11) Нет сопоставления SQL_TYPE_TIMESTAMP (93) Нет сопоставления[1] SQL_TYPE_TIMESTAMP (93)
SQL_TYPE_TIMESTAMP (93) Ошибка (из DM) Ошибка (из DM) SQL_TIMESTAMP (11) Нет сопоставления[2]

[1] В результате этого приложение ODBC 3.x, работающее с драйвером ODBC 2.x, может использовать коды даты, времени или метки времени, возвращаемые в результирующих наборах, возвращаемых функциями каталога.

[2] В результате этого приложение ODBC 3.x, работающее с драйвером ODBC 3.x, может использовать коды даты, времени или метки времени, возвращаемые в результирующих наборах, возвращаемых функциями каталога.