Contents|Index|Previous|Next

Data Type Identifiers and Descriptors

The data types listed in the SQL Data Types and C Data Types sections earlier in this appendix are concise data types: Each identifier refers to a single data type. There is a one-to-one correspondence between the identifier and the data type. Descriptors, however, do not in all cases use a single value to identify data types. In some cases, they use a verbose data type, and a type subcode. For all data types except datetime and interval data types, the verbose type identifier is the same as the concise type identifier and the value in SQL_DESC_DATETIME_INTERVAL_CODE is equal to 0. For datetime and interval data types, however, a verbose type (SQL_DATETIME or SQL_INTERVAL) is stored in SQL_DESC_TYPE, a concise type is stored in SQL_DESC_CONCISE_TYPE, and a subcode for each concise type is stored in SQL_DESC_DATETIME_INTERVAL_CODE. Setting one of these fields affects the others. For more information on these fields, see the SQLSetDescField function description.

When the SQL_DESC_TYPE or SQL_DESC_CONCISE_TYPE field is set for some data types, the SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_LENGTH, SQL_DESC_PRECISION, and SQL_DESC_SCALE fields are automatically set to default values, as applicable for the data type. For more information, see the description of the SQL_DESC_TYPE field in SQLSetDescField. If any of the default values set is not appropriate, the application should explicitly set the descriptor field through a call to SQLSetDescField.

The following table shows the concise type identifier, verbose type identifier, and type subcode for each datetime and interval SQL and C type identifier. As this table indicates, for datetime and interval data types the SQL_DESC_TYPE and SQL_DESC_DATETIME_INTERVAL_CODE fields have the same manifest constants for both SQL data types (in implementation descriptors) and C data types (in application descriptors).

Concise SQL type
Concise C type
Type
DATETIME_INTERVAL_CODE



SQL_TYPE_DATE
SQL_C_TYPE_DATE
SQL_DATETIME
SQL_CODE_DATE



SQL_TYPE_TIME
SQL_C_TYPE_TIME
SQL_DATETIME
SQL_CODE_TIME



SQL_TYPE_TIMESTAMP
SQL_C_TYPE_
TIMESTAMP
SQL_DATETIME
SQL_CODE_TIMESTAMP



SQL_INTERVAL_
MONTH
SQL_C_INTERVAL_
MONTH
SQL_INTERVAL
SQL_CODE_MONTH



SQL_INTERVAL_YEAR
SQL_C_INTERVAL_
YEAR
SQL_INTERVAL
SQL_CODE_YEAR



SQL_INTERVAL_YEAR_
TO_MONTH
SQL_C_INTERVAL_
YEAR_TO_MONTH
SQL_INTERVAL
SQL_CODE_YEAR_
TO_MONTH



SQL_INTERVAL_DAY
SQL_C_INTERVAL_
DAY
SQL_INTERVAL
SQL_CODE_DAY



SQL_INTERVAL_HOUR
SQL_C_INTERVAL_
HOUR
SQL_INTERVAL
SQL_CODE_HOUR



SQL_INTERVAL_
MINUTE
SQL_C_INTERVAL_
MINUTE
SQL_INTERVAL
SQL_CODE_MINUTE



SQL_INTERVAL_
SECOND
SQL_C_INTERVAL_
SECOND
SQL_INTERVAL
SQL_CODE_SECOND



SQL_INTERVAL_DAY_
TO_HOUR
SQL_C_INTERVAL_
DAY_TO_HOUR
SQL_INTERVAL
SQL_CODE_DAY_TO_
HOUR



SQL_INTERVAL_DAY_
TO_MINUTE
SQL_C_INTERVAL_
DAY_TO_MINUTE
SQL_INTERVAL
SQL_CODE_DAY_TO_
MINUTE



SQL_INTERVAL_DAY_
TO_SECOND
SQL_C_INTERVAL_
DAY_TO_SECOND
SQL_INTERVAL
SQL_CODE_DAY_TO_
SECOND



SQL_INTERVAL_
HOUR_TO_MINUTE
SQL_C_INTERVAL_
HOUR_TO_MINUTE
SQL_INTERVAL
SQL_CODE_HOUR_TO_
MINUTE



SQL_INTERVAL_
HOUR_TO_SECOND
SQL_C_INTERVAL_
HOUR_TO_SECOND
SQL_INTERVAL
SQL_CODE_HOUR_TO_
SECOND



SQL_INTERVAL_
MINUTE_TO_SECOND
SQL_C_INTERVAL_
MINUTE_TO_SECOND
SQL_INTERVAL
SQL_CODE_MINUTE_TO_
SECOND