日期/时间改进
本主题介绍 SQL Server Native Client 对于 SQL Server 2008 中已添加的日期和时间数据类型的支持。
有关日期/时间改进的详细信息,请参阅 日期/时间改进 (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)。 已编写的所用时间不带秒的小数部分的现有应用程序可以使用 time(0) 列。 现有的 OLE DB DBTYPE_TIME 和 ODBC SQL_TYPE_TIME 类型及其对应的结构应正常工作,除非应用程序依赖于元数据中返回的类型。
将具有扩展的秒的小数部分精度的时间用作非重复数据类型
某些应用程序(如过程控制和生产应用程序)要求能够处理精度高达 100 纳秒的时间数据。 可满足这一用途的新类型为 DBTYPE_DBTIME2 (OLE DB) 和 SQL_SS_TIME2 (ODBC)。
使用具有扩展的秒的小数部分精度的日期时间
OLE DB 已定义了一个精度高达 1 纳秒的类型。 但是,此类型已由现有的 SQL Server 应用程序使用,并且此类应用程序预计只需 1/300 秒精度。 新的 datetime2(3) 类型与现有的日期时间类型不直接兼容。 如果这一点将影响应用程序行为而导致风险,则应用程序必须使用新的 DBCOLUMN 标志以确定实际的服务器类型。
ODBC 还定义了一个精度高达 1 纳秒的类型。 但是,此类型已由现有的 SQL Server 应用程序使用,并且此类应用程序预计只需 3 毫秒的精度。 新的 datetime2(3) 类型与现有的 datetime 类型不直接兼容。 datetime2(3) 的精度为一毫秒,而 datetime 的精度为 1/300 秒。 在 ODBC 中,应用程序可以确定哪一个服务器类型用于描述符字段 SQL_DESC_TYPE_NAME。 因此,现有类型 SQL_TYPE_TIMESTAMP(对于 ODBC 2.0 应用程序为 SQL_TIMESTAMP)可用于这两个类型。
使用具有扩展的秒的小数部分精度和时区的日期时间
一些应用程序要求带有时区信息的日期时间值。 新的 DBTYPE_DBTIMESTAMPOFFSET (OLE DB) 和 SQL_SS_TIMESTAMPOFFSET (ODBC) 类型支持这一要求。
将 Date/Time/Datetime/Datetimeoffset 数据用于与现有转换一致的客户端转换
ODBC 标准描述了如何在现有的日期、时间和时间戳类型之间进行转换。 这些将以一致的方式进行扩展,以包括在 SQL Server 2008 中引入的所有日期和时间类型之间的转换。