Метаданные параметров и результатов

В этом разделе описывается, что возвращается в полях дескриптора параметров реализации (IPD) и дескриптора строк реализации (IRD) для типов данных даты и времени.

Сведения, возвращаемые в полях IPD

Следующие сведения возвращаются в полях IPD:

Тип параметра дата Время smalldatetime дата/время дата-время2 смещение даты и времени
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 двадцать три 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 двадцать три 19, 21..27 26, 28..34
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_TYPE SQL_TYPE_DATE SQL_SS_TYPE_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime в IRD в datetime2 IPD datetime в IRD в datetime2 IPD datetime2 смещение даты и времени
SQL_CA_SS_VARIANT_TYPE SQL_C_TYPE_DATE SQL_C_TYPE_BINARY SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_BINARY
SQL_CA_SS_VARIANT_SQL_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_CA_SS_SERVER_TYPE Не применимо Не применимо SQL_SS_TYPE_SMALLDATETIME SQL_SS_TYPE_DATETIME SQL_SS_TYPE_DEFAULT Не применимо

Иногда в диапазонах значений имеются разрывы. Например, 9 отсутствует в 8 10.16. Это следствие добавления десятичной запятой, когда точность в долях секунды выше нуля.

datetime2 возвращается в качестве имени smalldatetime типа и datetime поскольку драйвер использует это в качестве общего типа для передачи всех SQL_TYPE_TIMESTAMP значений на сервер.

SQL_CA_SS_VARIANT_SQL_TYPE — это новое поле дескриптора. Это поле было добавлено в IRD и IPD, чтобы приложения могли указывать тип значения, связанный со sqlvariant столбцами и параметрами (SQL_SSVARIANT).

SQL_CA_SS_SERVER_TYPE — это новое поле только IPD, позволяющее приложениям управлять тем, как значения параметров, привязанных как SQL_TYPE_TYPETIMESTAMP (или как SQL_SS_VARIANT с типом C SQL_C_TYPE_TIMESTAMP), отправляются на сервер. Если SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP (или SQL_SS_VARIANT и тип C SQL_C_TYPE_TIMESTAMP) при вызове SQLExecute или SQLExecDirect, значение SQL_CA_SS_SERVER_TYPE определяет тип табличного потока данных (TDS) значения параметра следующим образом:

Значение SQL_CA_SS_SERVER_TYPE Допустимые значения для SQL_DESC_PRECISION Допустимые значения для SQL_DESC_LENGTH Тип TDS
SQL_SS_TYPE_DEFAULT 0..7 19, 21..27 datetime2
SQL_SS_TYPE_SMALLDATETIME 0 19 smalldatetime
SQL_SS_TYPE_DATETIME 3 двадцать три datetime

Параметр SQL_CA_SS_SERVER_TYPE по умолчанию — SQL_SS_TYPE_DEFAULT. Параметры SQL_DESC_PRECISION и SQL_DESC_LENGTH проверяются с помощью параметра SQL_CA_SS_SERVER_TYPE, как описано в таблице выше. Если эта проверка завершается ошибкой, возвращается SQL_ERROR, а запись диагностики регистрируется с помощью SQLState 07006 и сообщение "Нарушение атрибута ограниченного типа данных". Эта ошибка также возвращается, если SQL_CA_SS_SERVER_TYPE задано значение, отличное от SQL_SS_TYPE DEFAULT, и DESC_CONCISE_TYPE не SQL_TYPE_TIMESTAMP. Эти проверки выполняются при проверке согласованности дескриптора, например:

  • При изменении SQL_DESC_DATA_PTR.

  • Во время подготовки или выполнения (при вызове SQLExecute, SQLExecDirect, SQLSetPos или SQLBulkOperations).

  • Если приложение принудительно выполняет неотложенную подготовку путем вызова SQLPrepare с отложенной подготовкой или путем вызова SQLNumResultCols, SQLDescribeCol или SQLDescribeParam для инструкции, подготовленной, но не выполненной.

Если SQL_CA_SS_SERVER_TYPE задан вызовом SQLSetDescField, его значение должно быть SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME или SQL_SS_TYPE_DATETIME. Если это не так, возвращается SQL_ERROR, а запись диагностики регистрируется с помощью SQLState HY092 и сообщения "Недопустимый идентификатор атрибута или параметра".

Атрибут SQL_CA_SS_SERVER_TYPE можно использовать приложениями, которые зависят от функций, поддерживаемых и smalldatetimeне поддерживаются.datetimedatetime2 Например, datetime2 требуется использовать dateadd функции и датированные функции, а datetimesmalldatetime также разрешать арифметические операторы. Большинству приложений не нужно использовать этот атрибут, и его использование следует избежать.

Сведения, возвращаемые в полях IRD

Следующие сведения возвращаются в полях IRD:

Тип столбца дата Время smalldatetime дата/время дата-время2 смещение даты и времени
SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 двадцать три 19, 21..27 26, 28..34
SQL_DESC_DISPLAY_SIZE 10 8,10..16 16 двадцать три 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 2 19, 21..27 26, 28..34
SQL_DESC_LITERAL_PREFIX ' ' ' ' ' '
SQL_DESC_LITERAL_SUFFIX ' ' ' ' ' '
SQL_DESC_LOCAL_TYPE_NAME date time smalldatetime datetime datetime2 смещение даты и времени
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE
SQL_DESC_TYPE SQL_DATETIME SQL_SS_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime datetime datetime2 смещение даты и времени
SQL_DESC_UNSIGNED SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE

См. также

Метаданные (ODBC)