次の方法で共有


SQL から C へ: 年月の間隔

年月間隔 ODBC SQL データ型の識別子は次のとおりです。

  • SQL_INTERVAL_MONTH
  • SQL_INTERVAL_YEAR
  • SQL_INTERVAL_YEAR_TO_MONTH

次の表は、年月間隔 SQL データを変換できる ODBC C データ型を示しています。 テーブル内の列と用語の詳細については、「 SQL から C データ型へのデータの変換」を参照してください。

C 型識別子 テスト TargetValuePtr StrLen_or_IndPtr SQLSTATE
SQL_C_INTERVAL_MONTH[a]

SQL_C_INTERVAL_YEAR[a]

SQL_C_INTERVAL_YEAR_TO_MONTH[a]
末尾のフィールド部分が切り捨てられない

末尾のフィールド部分の切り捨て

ターゲットの先行精度は、ソースからのデータを保持するのに十分な大きさではありません
Data

切り捨てられたデータ

未定義。
データの長さ (バイト単位)

データの長さ (バイト単位)

未定義。
該当なし

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]
間隔の有効桁数が 1 つのフィールドであり、切り捨てなしでデータが変換されました

間隔の有効桁数が 1 つのフィールドで、全体が切り捨てられました

間隔の有効桁数が 1 つのフィールドではなかった
Data

切り捨てられたデータ

未定義。
C データ型のサイズ

データの長さ (バイト単位)

C データ型のサイズ
該当なし

22003

22015
SQL_C_BINARY データ <のバイト長 = BufferLength

データ >BufferLength のバイト長
Data

未定義。
データの長さ (バイト単位)

未定義。
該当なし

22003
SQL_C_CHAR 文字バイト長 <BufferLength

整数 (小数部ではなく) の桁数 <BufferLength

整数 (小数部ではなく) 数字 >の数 = BufferLength
Data

切り捨てられたデータ

未定義。
C データ型のサイズ

C データ型のサイズ

未定義。
該当なし

01004

22003
SQL_C_WCHAR 文字の長さ <BufferLength

整数 (小数部ではなく) の桁数 <BufferLength

整数 (小数部ではなく) 数字 >の数 = BufferLength
Data

切り捨てられたデータ

未定義。
C データ型のサイズ

C データ型のサイズ

未定義。
該当なし

01004

22003

[a] 年月間隔 SQL 型は、任意の年月間隔 C 型に変換できます。

[b] 間隔の有効桁数が 1 つのフィールド (YEAR または MONTH のいずれか) の場合、間隔 SQL 型は、任意の正確な数値 (SQL_C_STINYINT、SQL_C_UTINYINT、SQL_C_USHORT、SQL_C_SHORT、SQL_C_SLONG、SQL_C_ULONG、またはSQL_C_NUMERIC) に変換できます。

既定の変換

間隔 SQL 型の既定の変換は、対応する C 間隔データ型に変換されます。 その後、アプリケーションは列またはパラメーターをバインドし (または、ARD の適切なレコード内のSQL_DESC_DATA_PTR フィールドを設定します)、初期化されたSQL_INTERVAL_STRUCT構造体を指すようにします (または、SQLGetData の呼び出しで TargetValuePtr 引数としてSQL_ INTERVAL_STRUCT構造体へのポインターを渡します)。