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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Внимание

SQL Server Native Client (SNAC) не поставляется с:

  • SQL Server 2022 (16.x) и более поздних версий
  • SQL Server Management Studio 19 и более поздних версий

Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.

Для новых проектов используйте один из следующих драйверов:

Сведения о 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