Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, что возвращается в полях дескриптора параметров реализации (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 |