日期和时间与架构行集

本主题提供有关 COLUMNS 行集和 PROCEDURE_PARAMETERS 行集的信息。 此信息与 SQL Server 2008 中引入的 OLE DB 日期和时间增强功能相关。

COLUMNS 行集

对于日期/时间类型将返回以下列值:

列名称 数据类型 COLUMN_FLAGS、DBCOLUMFLAGS_SS_ISVARIABLESCALE DATETIME_PRECISION
日期 DBTYPE_DBDATE(数据库日期类型) 清晰 0
时间 DBTYPE_DBTIME2 设置 0..7
smalldatetime DBTYPE_DBTIMESTAMP 清晰 0
datetime DBTYPE_DBTIMESTAMP 清晰 3
datetime2 DBTYPE_DBTIMESTAMP 设置 0..7
日期时间偏移量 DBTYPE_DBTIMESTAMPOFFSET 设置 0..7

在 COLUMN_FLAGS 中,对于日期/时间类型,DBCOLUMNFLAGS_ISFIXEDLENGTH 始终为 True,并且以下标记始终为 False:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

其余的标记(DBCOLUMNFLAGS_ISNULLABLE、DBCOLUMNFLAGS_MAYBENULL、DBCOLUMNFLAGS_WRITE 和 DBCOLUMNFLAGS_WRITEUNKNOWN)可能被设置,具体取决于列的定义方式。

在 COLUMN_FLAGS 中提供了新标记 DBCOLUMNFLAGS_SS_ISVARIABLESCALE,以允许应用程序确定 DATA_TYPE 为 DBTYPE_DBTIMESTAMP 的那些列的服务器类型。 为标识服务器类型还必须使用 DATETIME_PRECISION。

仅当连接到 SQL Server 2008 或更高版本服务器时,DBCOLUMNFLAGS_SS_ISVARIABLESCALE才有效。 连接到下级服务器时,未定义 DBCOLUMNFLAGS_SS_ISFIXEDSCALE。

PROCEDURE_PARAMETERS 行集

DATA_TYPE 包含与 COLUMNS 架构行集相同的值,并且 TYPE_NAME 包含服务器类型。

已添加新列 SS_DATETIME_PRECISION,以便返回类似于 COLUMNS 行集的 DATETIME_PRECISION 列中的类型精度。

PROVIDER_TYPES 行集

对于日期/时间类型将返回以下行:

类型 ->

日期 时间 smalldatetime datetime datetime2 日期时间偏移量
TYPE_NAME 日期 时间 smalldatetime datetime datetime2 日期时间偏移量
数据类型 DBTYPE_DBDATE(数据库日期类型) DBTYPE_DBTIME2 DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMPOFFSET
COLUMN_SIZE 10 16 16 23 二十七 34
LITERAL_PREFIX
LITERAL_SUFFIX
CREATE_PARAMS Null 规模 Null Null 规模 规模
IS_NULLABLE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE
CASE_SENSITIVE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE
可搜索 DB_SEARCHABLE DB_SEARCHABLE DB_SEARCHABLE DB_SEARCHABLE DB_SEARCHABLE DB_SEARCHABLE
UNSIGNED_ATTRIBUTE Null Null Null Null Null Null
FIXED_PREC_SCALE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE
AUTO_UNIQUE_VALUE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE
LOCAL_TYPE_NAME 日期 时间 smalldatetime datetime datetime2 日期时间偏移量
MINIMUM_SCALE Null 0 Null Null 0 0
MAXIMUM_SCALE Null 7 Null Null 7 7
GUID Null Null Null Null Null Null
TYPELIB Null Null Null Null Null Null
版本 Null Null Null Null Null Null
IS_LONG VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE VARIANT_FALSE
BEST_MATCH VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE,除非符合以下某项条件:

- 客户端是否已连接到下层服务器。
- 数据类型兼容性连接属性指定等于 80 的兼容级别。
VARIANT_TRUE,除非符合以下某项条件:

- 客户端是否已连接到下层服务器。
- 数据类型兼容性连接属性指定等于 80 的兼容级别。
VARIANT_TRUE
IS_FIXEDLENGTH VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE VARIANT_TRUE

OLE DB 仅定义数字和小数类型的MINIMUM_SCALE和MAXIMUM_SCALE,因此 SQL Server Native Client 将这些列用于时间、datetime2 和 datetimeoffset 是非标准的。

另请参阅

元数据 (OLE DB)