Новые типы данных в SQL Server 2008 - Datetimeoffset и Datetime2

ОГЛАВЛЕНИЕ

Datetimeoffset и Datetime2

Тип данных datetimeoffset обеспечивает сведения о часовом поясе. Тип данных time не содержит часового пояса и работает только для местного времени. На глобальых рынках, тем не менее, часто нужно знать, как время в одной части планеты соотносится со временем в другой. Сдвиг часового пояса одзначается как + или - ЧЧ:мм.

Этот код создает переменную datetimeoffset и инициализирует ее на значение времени 8:52 по стандартному тихоокеанскому времени:

DECLARE @date DATETIMEOFFSET = '2007-11-26T08:52:00.1234567-08:00'
PRINT @date
--Results
--2007-11-26 08:52:00.1234567 -08:00

Строка, которая инициализирует переменную datetimeoffset (в сценарии – @date) форматируется особым образом, с расположением от наиболее значимого элемента к наименее. Элементы даты и времени разделяются одной заглавной T. Знак «минус» отделяет элементы времени от часового пояса. Между минусом и элементами времени или часового пояса нет пробелов. Этот формат – один из двух форматов ISO 8601, поддерживаемых типом данных datetimeoffset. (ISO 8601 – это международный стандарт записи даты и времени.)

Точность компонента времени задается так же, как для типа данных time, по умолчанию – те же семь цифр. Диапазон – такой же.

Тип данных datetime2 – это расширение исходного типа datetime. Он поддерживает больший диапазон дат и большую точность в долях секунды, позволяя задавать точность. Диапазон дат типа datetime2 – от 1 января 0001 до 31 декабря 9999, в отличие от диапазона исходного datetime от 1 января 1753 до 31 декабря 9999. Как и в типе time, доступна точность долей секунды в семь знаков. Исходный тип datetime позволял использовать три цифры и диапазон времени от 00:00:00 до 23:59:59.999. Вот как создается и инициализируется на время и дату локального сервера переменная datetime2:

DECLARE @datetime2 DATETIME2 = GetDate();
PRINT @datetime2

--Results
--2007-11-26 09:39:04.1370000

Теперь посмотрим на новый тип данных hierarchyid. Этот тип данных работает с отношением между элементами данных в таблице, а не с конкретными данными о дате или времени.