SQL Server Native Client日期和时间改进

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件附带的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

本主题介绍对 SQL Server 2008 (10.0.x) 中添加的日期和时间数据类型SQL Server Native Client支持。

有关日期/时间改进的详细信息,请参阅 日期和时间改进 (OLE DB) 日期和时间改进 (ODBC)

使用情况

以下各节介绍使用新的日期和时间类型的各种方法。

将日期用作非重复数据类型

从 SQL Server 2008 (10.0.x) 开始,对日期/时间类型的增强支持使对 ODBC 2.0 应用程序) 和DBTYPE_DBDATE OLE DB 类型使用 SQL_TYPE_DATE ODBC 类型 (SQL_DATE更高效。

将时间用作非重复数据类型

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) 的精度为 1 毫秒, 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 (10.0.x) 中引入的所有日期和时间类型之间的转换。

另请参阅

SQL Server Native Client 功能