Compartir vía


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).