Поделиться через


Улучшения обработки даты-времени

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

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

Сведения об образцах приложений, которые демонстрируют эту функцию, см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

Сведения об использовании

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

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

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

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

OLE DB уже имеет тип данных, содержащих время, DBTYPE_DBTIME, с точностью 1 секунда. В 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 and и ODBC SQL_TYPE_TIME и их соответствующие структуры должны работать правильно, если приложение не использует тип, возвращаемый в метаданных.

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

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

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

В 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) может использоваться для обоих типов.

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

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

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

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