SQL zu C: Jahr-Monat-Intervalle
Die Bezeichner für die ODBC SQL-Datentypen zwischen Jahr und Monat sind die folgenden:
- SQL_INTERVAL_MONTH
- SQL_INTERVAL_YEAR
- SQL_INTERVAL_YEAR_TO_MONTH
In der folgenden Tabelle sind die ODBC C-Datentypen aufgeführt, in die SQL-Daten im Jahr-Monat-Intervall konvertiert werden können. Eine Erläuterung der Spalten und Begriffe in der Tabelle finden Sie unter Konvertieren von Daten aus SQL in C-Datentypen.
C-Typbezeichner | Test | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_INTERVAL_MONTH[a] SQL_C_INTERVAL_YEAR[a] SQL_C_INTERVAL_YEAR_TO_MONTH[a] |
Nachgestellter Feldteil nicht abgeschnitten Nachgestellter Feldteil abgeschnitten Führende Genauigkeit des Ziels ist nicht groß genug, um Daten aus der Quelle zu halten |
Daten Abgeschnittene Daten Nicht definiert |
Länge der Daten in Bytes Länge der Daten in Bytes Nicht definiert |
– 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] |
Die Intervallgenauigkeit war ein einzelnes Feld, und die Daten wurden ohne Abschneiden konvertiert. Intervallgenauigkeit war ein einzelnes Feld und abgeschnittenes Ganzes Intervallgenauigkeit war kein einzelnes Feld |
Daten Abgeschnittene Daten Nicht definiert |
Größe des C-Datentyps Länge der Daten in Bytes Größe des C-Datentyps |
– 22003 22015 |
SQL_C_BINARY | Bytelänge der Daten <= BufferLength Bytelänge der Daten >BufferLength |
Daten Nicht definiert |
Länge der Daten in Bytes Nicht definiert |
– 22003 |
SQL_C_CHAR | Zeichenbytelänge <BufferLength Anzahl der ganzen Ziffern (im Gegensatz zu Bruchstellen<) BufferLength Anzahl ganzer Ziffern (im Gegensatz zu Bruchstellen >) = BufferLength |
Daten Abgeschnittene Daten Nicht definiert |
Größe des C-Datentyps Größe des C-Datentyps Nicht definiert |
– 01004 22003 |
SQL_C_WCHAR | Zeichenlänge <BufferLength Anzahl der ganzen Ziffern (im Gegensatz zu Bruchstellen<) BufferLength Anzahl ganzer Ziffern (im Gegensatz zu Bruchstellen >) = BufferLength |
Daten Abgeschnittene Daten Nicht definiert |
Größe des C-Datentyps Größe des C-Datentyps Nicht definiert |
– 01004 22003 |
[a] Ein SQL-Typ eines Jahres-Monatsintervalls kann in einen beliebigen Jahr-Monat-Intervall-C-Typ konvertiert werden.
[b] Wenn die Intervallgenauigkeit ein einzelnes Feld ist (eines von YEAR oder MONTH), kann der SQL-Intervalltyp in einen beliebigen genauen numerischen Typ (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_USHORT, SQL_C_SHORT, SQL_C_SLONG, SQL_C_ULONG oder SQL_C_NUMERIC) konvertiert werden.
Standardkonvertierungen
Die Standardkonvertierung eines SQL-Intervalltyps ist in den entsprechenden C-Intervalldatentyp. Die Anwendung bindet dann die Spalte oder den Parameter (oder legt das SQL_DESC_DATA_PTR Feld im entsprechenden Datensatz der ARD fest), um auf die initialisierte SQL_INTERVAL_STRUCT -Struktur zu verweisen (oder übergibt einen Zeiger auf die SQL_ INTERVAL_STRUCT-Struktur als TargetValuePtr-Argument in einem Aufruf von SQLGetData).