Улучшения даты и времени собственного клиента SQL Server

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server или последний драйвер Microsoft ODBC для SQL Server . Сведения о SQLNCLI, которые поставляется в качестве компонента ядра СУБД SQL Server (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.

В этом разделе описывается поддержка собственного клиента SQL Server для типов данных даты и времени, добавленных в SQL Server 2008 (10.0.x).

Дополнительные сведения об улучшениях даты и времени см. в статьях "Улучшения даты и времени" (OLE DB) и "Улучшения даты и времени" (ODBC).

Использование

В следующих разделах приводится описание различных способов использования новых типов даты и времени.

Использование Date как отдельного типа данных

Начиная с SQL Server 2008 (10.0.x), улучшенная поддержка типов даты и времени упрощает использование типа ODBC SQL_TYPE_DATE (SQL_DATE для приложений ODBC 2.0) и типа OLE DB DBTYPE_DBDATE.

Использование Time как отдельного типа данных

OLE DB уже имеет тип данных, представляющий время с точностью до 1 секунды — DBTYPE_DBTIME. В ODBC его эквивалентом является тип SQL_TYPE_TIME (SQL_TIME для приложений ODBC 2.0).

Новый тип данных времени SQL Server имеет дробные секунды до 100 наносекунд. Для этого требуются новые типы в собственном клиенте SQL Server: DBTYPE_DBTIME2 (OLE DB) и SQL_SS_TIME2 (ODBC). Существующие приложения, не работающие с долями секунд, могут пользоваться столбцами time(0). Существующие типы OLE DB DBTYPE_TIME и ODBC SQL_TYPE_TIME и соответствующие им структуры должны работать правильно, если приложение не использует тип, возвращаемый в метаданных.

Использование Time как отдельного типа данных с расширенной точностью до долей секунд

Некоторым приложениям, например приложениям для управления производством и процессами, необходима возможность обработки времени с точностью до 100 наносекунд. Эту возможность обеспечивают новые типы DBTYPE_DBTIME2 (OLE DB) и SQL_SS_TIME2 (ODBC).

Использование Datetime как отдельного типа данных с расширенной точностью до долей секунд

В OLE DB уже имеется определение типа с точностью до 1 наносекунды. Однако этот тип уже используется существующими приложениями SQL Server, и такие приложения ожидают только 1/300 секунды точности. Новый тип datetime2(3) несовместим напрямую с существующим типом datetime. Если есть риск, что он повлияет на работу приложения, необходимо при определении фактического типа на сервере пользоваться новым флагом DBCOLUMN.

ODBC также определяет тип с точностью до 1 наносекунды. Однако этот тип уже используется существующими приложениями SQL Server, и такие приложения ожидают только 3 миллисекунда точности. Новый тип datetime2(3) несовместим напрямую с существующим типом данных datetime . Типdatetime2(3) имеет точность до одной миллисекунды, а datetime — 1/300 секунды. В ODBC приложение имеет возможность выяснить тип данных сервера по полю дескриптора SQL_DESC_TYPE_NAME. Поэтому существующий тип SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP для приложений ODBC 2.0) может использоваться для обоих типов.

Использование Datetime с расширенной точностью до долей секунд и часовым поясом

Некоторым приложениям необходимы значения даты-времени вместе со сведениями о часовом поясе. Эта возможность поддерживается новыми типами DBTYPE_DBTIMESTAMPOFFSET (OLE DB) и SQL_SS_TIMESTAMPOFFSET (ODBC).

Использование данных Date/Time/Datetime/Datetimeoffset с преобразованиями на стороне клиента, согласующимися с существующими преобразованиями

Стандарт ODBC описывает преобразования между существующими типами даты, времени и отметок времени. Они расширяются согласованно, чтобы включить преобразования между всеми типами даты и времени, представленными в SQL Server 2008 (10.0.x).

См. также

Компоненты собственного клиента SQL Server