共用方式為


參數和結果元數據

本主題描述在日期和時間數據類型的實作參數描述元 (IPD) 和實作數據列描述元 (IRD) 欄位中傳回的內容。

IPD 欄位中傳回的資訊

IPD 欄位中會傳回下列資訊:

參數類型 日期 時間 smalldatetime 日期時間 datetime2 datetimeoffset(日期時間偏移量)
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_TYPE SQL_TYPE_DATE SQL_SS_TYPE_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime 在 IRD 中, datetime2 在 IPD 中 datetime 在 IRD 中, datetime2 在 IPD 中 datetime2 datetimeoffset(日期時間偏移量)
SQL_CA_SS_VARIANT_TYPE SQL_C_TYPE_DATE SQL_C_TYPE_BINARY SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_BINARY
SQL_CA_SS_VARIANT_SQL_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_SS_TIMESTAMPOFFSET
SQL_CA_SS_SERVER_TYPE N/A N/A SQL_SS_TYPE_SMALLDATETIME SQL_SS_TYPE_DATETIME SQL_SS_TYPE_DEFAULT N/A

有時候值範圍有不連續。 例如,8,10..16 中遺漏 9。 這是當小數有效位數大於零時增加的小數點所導致。

datetime2 會傳回 作為 的 smalldatetime typename, datetime 因為驅動程式會使用這個 做為將所有 SQL_TYPE_TIMESTAMP 值傳送至伺服器的常見類型。

SQL_CA_SS_VARIANT_SQL_TYPE是新的描述元欄位。 此欄位已新增至 IRD 和 IPD,讓應用程式能夠指定與 sqlvariant (SQL_SSVARIANT) 資料行和參數相關聯的實值類型

SQL_CA_SS_SERVER_TYPE是一個新的僅限IPD的欄位,可讓應用程式控制系結為 SQL_TYPE_TYPETIMESTAMP 的參數值(或以 C 類型為 SQL_C_TYPE_TIMESTAMP 的SQL_SS_VARIANT)傳送至伺服器的方式。 如果呼叫 SQLExecute 或 SQLExecDirect 時SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP (或 為 SQL_SS_VARIANT,且 C 類型為 SQL_C_TYPE_TIMESTAMP,則 SQL_CA_SS_SERVER_TYPE 的值會決定參數值的表格式數據流 (TDS) 類型,如下所示:

SQL_CA_SS_SERVER_TYPE的值 SQL_DESC_PRECISION的有效值 SQL_DESC_LENGTH的有效值 TDS 類型
SQL_SS_TYPE_DEFAULT 0..7 19, 21..27 datetime2
SQL_SS_TYPE_SMALLDATETIME 0 19 smalldatetime
SQL_SS_TYPE_DATETIME 3 23 datetime

SQL_CA_SS_SERVER_TYPE的預設設定為 SQL_SS_TYPE_DEFAULT。 SQL_DESC_PRECISION和SQL_DESC_LENGTH的設定會使用上表中所述的SQL_CA_SS_SERVER_TYPE設定進行驗證。 如果此驗證失敗,則會傳回SQL_ERROR,並使用State 07006和訊息「限制數據類型屬性違規」記錄診斷記錄。 如果 SQL_CA_SS_SERVER_TYPE 設為 DEFAULT SQL_SS_TYPE 以外的值,而且DESC_CONCISE_TYPE未SQL_TYPE_TIMESTAMP,也會傳回此錯誤。 這些驗證會在描述項一致性驗證發生時執行,例如:

  • 變更SQL_DESC_DATA_PTR時。

  • 在準備或運行時間(呼叫 SQLExecute、SQLExecDirect、SQLSetPos 或 SQLBulkOperations 時)。

  • 當應用程式針對已備妥但未執行的語句呼叫 SQLPrepare 並停用延遲準備,或呼叫 SQLNumResultCols、SQLDescribeCol 或 SQLDescribeParam 來強制進行非延遲準備時。

當呼叫 SQLSetDescField 設定SQL_CA_SS_SERVER_TYPE時,其值必須是SQL_SS_TYPE_DEFAULT、SQL_SS_TYPE_SMALLDATETIME或SQL_SS_TYPE_DATETIME。 如果不是這種情況,則會傳回SQL_ERROR,並記錄診斷記錄與 SQLState HY092 和訊息「屬性/選項識別碼無效」。

SQL_CA_SS_SERVER_TYPE 屬性可由相依於和 smalldatetime所支援datetime功能的應用程式使用,但不能datetime2使用 。 例如, datetime2 需要使用 dateadddatediif 函式,而 datetimesmalldatetime 允許算術運算元。 大部分的應用程式都不需要使用這個屬性,因此應該避免使用。

IRD 欄位中傳回的資訊

IRD 欄位中會傳回下列資訊:

欄位類型 日期 時間 smalldatetime 日期時間 datetime2 datetimeoffset(日期時間偏移量)
SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_TYPE_TIMESTAMP (SQL類型時間戳記) SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_DISPLAY_SIZE 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 2 19, 21..27 26, 28..34
SQL_DESC_LITERAL_PREFIX ' ' ' ' ' '
SQL_DESC_LITERAL_SUFFIX ' ' ' ' ' '
SQL_DESC_LOCAL_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset(日期時間偏移量)
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE
SQL_DESC_TYPE SQL_DATETIME SQL_SS_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset(日期時間偏移量)
SQL_DESC_UNSIGNED SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE

另請參閱

中繼資料 (ODBC)