Teilen über


C-Intervallstruktur

Jeder der im Abschnitt C-Datentypen aufgeführten C-Intervalldatentypen verwendet dieselbe Struktur, um die Intervalldaten zu enthalten. Wenn SQLFetch, SQLFetchScroll oder SQLGetData aufgerufen wird, gibt der Treiber Daten in die SQL_INTERVAL_STRUCT-Struktur zurück, verwendet den Wert, der von der Anwendung für die C-Datentypen (im Aufruf von SQLBindCol, SQLGetData oder SQLBindParameter) angegeben wurde, um den Inhalt von SQL_INTERVAL_STRUCT zu interpretieren, und füllt das interval_type Feld der Struktur mit dem Enumerationswert auf, der dem C-Typ entspricht. Beachten Sie, dass Treiber das Feld interval_type nicht lesen, um den Typ des Intervalls zu bestimmen. sie rufen den Wert des SQL_DESC_CONCISE_TYPE Deskriptorfelds ab. Wenn die Struktur für Parameterdaten verwendet wird, verwendet der Treiber den von der Anwendung im feld SQL_DESC_CONCISE_TYPE der APD angegebenen Wert, um den Inhalt von SQL_INTERVAL_STRUCT zu interpretieren, auch wenn die Anwendung den Wert des felds interval_type auf einen anderen Wert festlegt.

Diese Struktur ist wie folgt definiert:

typedef struct tagSQL_INTERVAL_STRUCT  
{  
   SQLINTERVAL interval_type;   
   SQLSMALLINT interval_sign;  
   union {  
         SQL_YEAR_MONTH_STRUCT   year_month;  
         SQL_DAY_SECOND_STRUCT   day_second;  
         } intval;  
} SQL_INTERVAL_STRUCT;  
typedef enum   
{  
   SQL_IS_YEAR = 1,  
   SQL_IS_MONTH = 2,  
   SQL_IS_DAY = 3,  
   SQL_IS_HOUR = 4,  
   SQL_IS_MINUTE = 5,  
   SQL_IS_SECOND = 6,  
   SQL_IS_YEAR_TO_MONTH = 7,  
   SQL_IS_DAY_TO_HOUR = 8,  
   SQL_IS_DAY_TO_MINUTE = 9,  
   SQL_IS_DAY_TO_SECOND = 10,  
   SQL_IS_HOUR_TO_MINUTE = 11,  
   SQL_IS_HOUR_TO_SECOND = 12,  
   SQL_IS_MINUTE_TO_SECOND = 13  
} SQLINTERVAL;  
  
typedef struct tagSQL_YEAR_MONTH  
{  
   SQLUINTEGER year;  
   SQLUINTEGER month;   
} SQL_YEAR_MONTH_STRUCT;  
  
typedef struct tagSQL_DAY_SECOND  
{  
   SQLUINTEGER day;  
   SQLUINTEGER hour;  
   SQLUINTEGER minute;  
   SQLUINTEGER second;  
   SQLUINTEGER fraction;  
} SQL_DAY_SECOND_STRUCT;  

Das interval_type Feld der SQL_INTERVAL_STRUCT gibt der Anwendung an, welche Struktur in der Union enthalten ist und welche Mitglieder der Struktur relevant sind. Das Feld interval_sign hat den Wert SQL_FALSE, wenn das Intervallleitfeld nicht signiert ist. wenn es SQL_TRUE ist, ist das führende Feld negativ. Der Wert im führenden Feld selbst ist immer ohne Vorzeichen, unabhängig vom Wert von interval_sign. Das feld interval_sign fungiert als Zeichenbit.