Типы временных интервалов

Типы времени и временной метки с временной зоной

 

Ø Тип TIME WITH TIME ZONE. Этот тип данных является таким же, как и тип TIME, за тем отличием, что значения типа TIME WITH TIME ZONE включают дополнительный компонент-значение, характеризующее смещение соответствующего времени от гринвичского времени (теперь его называют UTC – universal time coordinated). Не будем касаться деталей представления этого дополнительного компонента.

Ø Тип TIMESTAMP WITH TIME ZONE. Этот тип данных является таким же, как и тип TIMESTAMP, за тем отличием, что значения типа TIMESTAMP WITH TIME ZONE включают дополнительный компонент-значение, характеризующее смещение соответствующего времени от гринвичского времени.

 

Вообще говоря, временным интервалом называется разность между двумя значениями даты или времени. В SQL определены две категории типов временных интервалов: “год-месяц” и “день-время суток”. Временные интервалы языка SQL не привязываются к начальному и/или конечному значению даты/времени, а описывают только протяженность во времени. В общем случае при определении столбца типа временного интервала указывается INTERVAL start (p) [ TO end (q) ], где в качестве “start” и “end” могут задаваться YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Параметр p задает требуемую точность лидирующего поля интервала (число десятичных цифр). Параметр q может задаваться только в том случает, когда в качестве end используется SECOND, и указывает точность долей секунды. Более точно, возможны следующие вариации типов временных интервалов.

 

Ø Типы категории “год-месяц”. Можно определить столбцы следующих типов: INTERVAL YEAR, INTERVAL YEAR (p) (значения этих типов – временные интервалы в годах), INTERVAL MONTH, INTERVAL MONTH (p) (значения этих типов – временные интервалы в месяцах), INTERVAL YEAR TO MONTH, INTERVAL YEAR (p) TO MONTH (значения этих типов – временные интервалы в годах и месяцах). Если значение параметра p не указывается явно, по умолчанию принимается его значение “2”.

 

Ø Типы категории “день-время суток”. При определении столбца можно использовать следующие комбинации (для полноты перечислим все возможности):
INTERVAL DAY (p),
INTERVAL DAY,
INTERVAL DAY (p) TO HOUR,
INTERVAL DAY TO HOUR,
INTERVAL DAY (p) TO MINUTE,
INTERVAL DAY TO MINUTE,
INTERVAL DAY (p) TO SECOND (q),
INTERVAL DAY TO SECOND (q),
INTERVAL DAY (p) TO SECOND,
INTERVAL DAY TO SECOND,
INTERVAL HOUR (p),
INTERVAL HOUR, INTERVAL HOUR (p) TO MINUTE,
INTERVAL HOUR TO MINUTE,
INTERVAL HOUR (p) TO SECOND (q),
INTERVAL HOUR TO SECOND (q),
NTERVAL HOUR TO SECOND,
INTERVAL MINUTE (p),
INTERVAL MINUTE,
INTERVAL MINUTE (p) TO SECOND (q),
INTERVAL MINUTE TO SECOND (q),
INTERVAL MINUTE (p) TO SECOND,
INTERVAL MINUTE TO SECOND,
INTERVAL SECOND (p, q),
INTERVAL SECOND (p),
INTERVAL SECOND.

 

Если значение параметра p не указывается явно, по умолчанию принимается его значение “2”. Значением по умолчанию параметра q является “6”.

 

Ø Приведем только один пример литерала одной из разновидностей типа INTERVAL: INTERVAL ’10:20’ MINUTE TO SECOND – временной интервал в десять минут и двадцать секунд.

 

Ø Над значениями темпоральных типов могут выполняться арифметические операции, смысл которых определяется следующей таблицей:

 

Тип первого операнда Операция Тип второго операнда Тип результата
Datetime - Datetime Interval
Datetime + или - Interval Datetime
Interval + Datetime Datetime
Interval + или - Interval Interval
Interval * или / Numeric Interval
Numeric * Interval Interval

 

Значения типов данных временных интервалов образуются при вычитании одного значения типы даты или времени суток из другого значения соответствующего типа. При добавлении интервального значения к значению типа даты/времени образуется новое значение типа даты/времени. Кроме того, значение интервального типов можно умножать и делить на числовые значения, получая новое значение интервального типа.