本主题介绍 SQL Server 2008 中添加的日期和时间数据类型的 SQL Server Native Client 支持。
有关日期/时间改进的详细信息,请参阅日期和时间改进(OLE DB)和日期和时间改进 (ODBC)。
有关演示此功能的示例应用程序的信息,请参阅 SQL Server 数据编程示例。
用法
以下部分介绍了使用新日期和时间类型的各种方法。
将日期用作非重复数据类型
从 SQL Server 2008 开始,对日期/时间类型的增强支持可以更高效地使用 SQL_TYPE_DATE ODBC 类型(ODBC 2.0 应用程序的SQL_DATE)和 DBTYPE_DBDATE OLE DB 类型。
将时间用作非重复数据类型
OLE DB 已具有仅包含时间DBTYPE_DBTIME的数据类型,其精度为 1 秒。 在 ODBC 中,等效类型SQL_TYPE_TIME(ODBC 2.0 应用程序的SQL_TIME)。
新的 SQL Server 时间数据类型的秒数精确到 100 纳秒。 这需要 SQL Server Native Client 中的新类型:DBTYPE_DBTIME2(OLE DB)和SQL_SS_TIME2(ODBC)。 写入到使用时间且没有秒的小数秒的现有应用程序可以使用时间(0)列。 除非应用程序依赖于元数据中返回的类型,否则现有的 OLE DB DBTYPE_TIME和 ODBC SQL_TYPE_TIME类型及其相应的结构应正常工作。
将时间用作具有扩展小数秒精度的非重复数据类型
某些应用程序(如进程控制和制造应用程序)需要能够处理精度高达 100 纳秒的时间数据。 出于此目的,新类型是DBTYPE_DBTIME2(OLE DB)和SQL_SS_TIME2(ODBC)。
将 Datetime 与扩展的小数秒精度一起使用
OLE DB 已定义精度高达 1 纳秒的类型。 但是,现有 SQL Server 应用程序已使用此类型,此类应用程序预计每秒精度只有 1/300。 新 datetime2(3) 类型与现有日期时间类型不直接兼容。 如果存在影响应用程序行为的风险,应用程序必须使用新的 DBCOLUMN 标志来确定实际的服务器类型。
ODBC 还定义了精度高达 1 纳秒的类型。 但是,现有 SQL Server 应用程序已使用此类型,此类应用程序仅需要 3 毫秒精度。 新 datetime2(3) 类型与现有 datetime 类型不兼容。
datetime2(3) 精度为 1 毫秒, datetime 精度为 1/300 秒。 在 ODBC 中,应用程序可以确定哪些服务器类型与描述符字段SQL_DESC_TYPE_NAME一起使用。 因此,现有类型SQL_TYPE_TIMESTAMP(ODBC 2.0 应用程序的SQL_TIMESTAMP)可用于这两种类型。
将 Datetime 与扩展的小数秒精度和时区配合使用
某些应用程序需要具有时区信息的日期/时间值。 新DBTYPE_DBTIMESTAMPOFFSET (OLE DB) 和 SQL_SS_TIMESTAMPOFFSET (ODBC) 类型支持此功能。
将 Date/Time/Datetime/Datetimeoffset 数据与 Client-Side 转换一致于现有转换
ODBC 标准描述现有日期、时间和时间戳类型之间的转换的工作原理。 它们以一致的方式进行扩展,以包括 SQL Server 2008 中引入的所有日期和时间类型之间的转换。