SQL a C: Intervalos de mes y año
Los identificadores de los tipos de datos DE SQL ODBC del intervalo de año-mes son los siguientes:
- SQL_INTERVAL_MONTH
- SQL_INTERVAL_YEAR
- SQL_INTERVAL_YEAR_TO_MONTH
En la tabla siguiente se muestran los tipos de datos de ODBC C a los que se pueden convertir los datos SQL de intervalo de año y mes. Para obtener una explicación de las columnas y los términos de la tabla, vea Convertir datos de SQL a tipos de datos de C.
Identificador de tipo de C | Prueba | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_INTERVAL_MONTH[a] SQL_C_INTERVAL_YEAR[a] SQL_C_INTERVAL_YEAR_TO_MONTH[a] |
Parte de campos finales no truncada Parte de campos finales truncada La precisión inicial del destino no es lo suficientemente grande como para contener datos del origen |
data Datos truncados No definido |
Longitud de los datos en bytes Longitud de los datos en bytes No definido |
N/D 01S07 22015 |
SQL_C_STINYINT[b] SQL_C_UTINYINT[b] SQL_C_USHORT[b] SQL_C_SHORT[b] SQL_C_SLONG[b] SQL_C_ULONG[b] SQL_C_NUMERIC[b] SQL_C_BIGINT[b] |
La precisión del intervalo era un único campo y los datos se convierten sin truncamiento La precisión del intervalo era un único campo y se truncaba todo La precisión del intervalo no era un único campo |
data Datos truncados No definido |
Tamaño del tipo de datos C Longitud de los datos en bytes Tamaño del tipo de datos C |
N/D 22003 22015 |
SQL_C_BINARY | Longitud de bytes de datos <= BufferLength Longitud de bytes de BufferLength de datos > |
data No definido |
Longitud de los datos en bytes No definido |
N/D 22003 |
SQL_C_CHAR | BufferLength de longitud < de bytes de caracteres Número de dígitos enteros < (en lugar de fracciones) BufferLength Número de dígitos enteros >(en lugar de fracciones) = BufferLength |
data Datos truncados No definido |
Tamaño del tipo de datos C Tamaño del tipo de datos C No definido |
N/D 01004 22003 |
SQL_C_WCHAR | BufferLength de longitud < de caracteres Número de dígitos enteros < (en lugar de fracciones) BufferLength Número de dígitos enteros >(en lugar de fracciones) = BufferLength |
data Datos truncados No definido |
Tamaño del tipo de datos C Tamaño del tipo de datos C No definido |
N/D 01004 22003 |
[a] Un tipo SQL de intervalo de año-mes se puede convertir en cualquier tipo C de intervalo de año-mes.
[b] Si la precisión del intervalo es un solo campo (uno de YEAR o MONTH), el tipo SQL interval se puede convertir en cualquier numérico exacto (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_USHORT, SQL_C_SHORT, SQL_C_SLONG, SQL_C_ULONG o SQL_C_NUMERIC).
Conversiones predeterminadas
La conversión predeterminada de un tipo SQL de intervalo es al tipo de datos intervalo de C correspondiente. A continuación, la aplicación enlaza la columna o el parámetro (o establece el campo SQL_DESC_DATA_PTR en el registro adecuado de ARD) para que apunte a la estructura de SQL_INTERVAL_STRUCT inicializada (o pasa un puntero a la estructura SQL_ INTERVAL_STRUCT como el argumento TargetValuePtr en una llamada a SQLGetData).