Улучшения обработки даты-времени
В этом разделе описана поддержка в собственном клиенте SQL Server новых типов данных даты и времени, которые были введены в SQL Server 2008.
Дополнительные сведения об улучшениях в поддержке типов данных даты-времени см. в разделах Улучшения функций даты-времени (OLE DB) и Улучшенная обработка даты и времени (ODBC).
Сведения о примерах приложений, которые демонстрируют эту функцию, см. в разделе Образцы программирования для SQL Server.
Использование
В следующих разделах приводится описание различных способов использования новых типов даты и времени.
Использование Date как отдельного типа данных
Начиная с SQL Server 2008, расширенная поддержка типов даты-времени делает использование типа SQL_TYPE_DATE ODBC (SQL_DATE для приложений ODBC 2.0) и типа DBTYPE_DBDATE OLE DB более эффективным.
Использование 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.