分享方式:


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]
結尾欄位部分未截斷

結尾欄位部分截斷

目標的主要精確度不夠大,無法保存來源的資料
資料

截斷的資料

未定義
以位元組為單位的資料長度

以位元組為單位的資料長度

未定義
n/a

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]
間隔有效位數是單一欄位,且資料未經截斷即可轉換

間隔有效位數是單一欄位並截斷整個

間隔有效位數不是單一欄位
資料

截斷的資料

未定義
C 資料類型的大小

以位元組為單位的資料長度

C 資料類型的大小
n/a

22003

22015
SQL_C_BINARY 位元組長度的資料 < = BufferLength

資料 > BufferLength 的位元組長度
資料

未定義
以位元組為單位的資料長度

未定義
n/a

22003
SQL_C_CHAR 字元位元組長度 < BufferLength

整數數(而不是小數)位數 < BufferLength

整數數 (而不是小數) 位數 > = BufferLength
資料

截斷的資料

未定義
C 資料類型的大小

C 資料類型的大小

未定義
n/a

01004

22003
SQL_C_WCHAR 字元長度 < BufferLength

整數數(而不是小數)位數 < BufferLength

整數數 (而不是小數) 位數 > = BufferLength
資料

截斷的資料

未定義
C 資料類型的大小

C 資料類型的大小

未定義
n/a

01004

22003

[a] 年月間隔 SQL 類型可以轉換成任何年月間隔 C 類型。

[b] 如果間隔有效位數是單一欄位(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 interval 資料類型。 然後,應用程式會系結資料行或參數(或設定 ARD 適當記錄中的SQL_DESC_DATA_PTR欄位),以指向初始化的SQL_INTERVAL_STRUCT結構(或將指標傳遞至SQL_ INTERVAL_STRUCT結構的指標,做為 對 SQLGetData 的呼叫 中的 TargetValuePtr 引數)。