Поддержка sql_variant для типов даты и времени
Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)
В этом разделе описывается, как тип данных sql_variant поддерживает расширенные функции даты и времени.
Атрибут столбца SQL_CA_SS_VARIANT_TYPE используется для получения типа C для столбца результатов variant. SQL Server 2008 (10.0.x) представляет дополнительный атрибут, SQL_CA_SS_VARIANT_SQL_TYPE, который задает тип SQL варианта результирующий столбец в дескрипторе строки реализации (IRD). SQL_CA_SS_VARIANT_SQL_TYPE также можно использовать в дескрипторе параметра реализации (IPD) для указания типа SQL SQL_SS_TIME2 или параметра SQL_SS_TIMESTAMPOFFSET, который имеет SQL_C_BINARY тип C, привязанный к типу SQL_SS_VARIANT типа.
Новые типы SQL_SS_TIME2 и SQL_SS_TIMESTAMPOFFSET можно задать с помощью SQLColAttribute. SQL_CA_SS_VARIANT_SQL_TYPE можно вернуть SQLGetDescField.
Для столбцов результата драйвер выполняет преобразование из типа variant в типы даты-времени. Дополнительные сведения см. в разделе "Преобразования из SQL в C". При привязке к SQL_C_BINARY длина буфера должна быть достаточно большой, чтобы получить структуру, соответствующую типу SQL.
Для параметров SQL_SS_TIME2 и SQL_SS_TIMESTAMPOFFSET драйвер преобразует значения C в sql_variant значения, как описано в таблице ниже. Если параметр привязан как SQL_C_BINARY, а серверный тип — SQL_SS_VARIANT, то параметр будет рассматриваться как двоичное значение, если только приложение не установило для SQL_CA_SS_VARIANT_SQL_TYPE какой-либо другой тип SQL. В таком случае приоритет имеет SQL_CA_SS_VARIANT_SQL_TYPE; то есть если установлен SQL_CA_SS_VARIANT_SQL_TYPE, он переопределяет поведение по умолчанию — вывод типа SQL для variant из типа C.
Тип C | Тип сервера | Комментарии |
---|---|---|
SQL_C_CHAR | varchar | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_WCHAR | nvarchar | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_TINYINT | smallint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_STINYINT | smallint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_SHORT | smallint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_SSHORT | smallint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_USHORT | целое | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_LONG | целое | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_SLONG | целое | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_ULONG | bigint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_SBIGINT | bigint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_FLOAT | real | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_DOUBLE | с плавающей запятой | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_BIT | bit | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_UTINYINT | tinyint | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_BINARY | varbinary | SQL_CA_SS_VARIANT_SQL_TYPE не установлен. |
SQL_C_BINARY | Время | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2 Масштаб имеет значение SQL_DESC_PRECISION (параметр DecimalDigits SQLBindParameter). |
SQL_C_BINARY | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET Масштаб имеет значение SQL_DESC_PRECISION (параметр DecimalDigits SQLBindParameter). |
SQL_C_TYPE_DATE | date | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_TYPE_TIME | time(0) | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_TYPE_TIMESTAMP | datetime2 | Масштаб имеет значение SQL_DESC_PRECISION (параметр DecimalDigits SQLBindParameter). |
SQL_C_NUMERIC | десятичное | Точность имеет значение SQL_DESC_PRECISION (параметр ColumnSize SQLBindParameter). Масштабируемый набор для SQL_DESC_SCALE (параметр DecimalDigits SQLBindParameter). |
SQL_C_SS_TIME2 | Время | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
SQL_C_SS_TIMESTAMPOFFSET | datetimeoffset | Значение SQL_CA_SS_VARIANT_SQL_TYPE не учитывается. |
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по