Выделение заданных элементов даты
Функция
Выделение заданных элементов даты.
Спецификация
Варианты:
-
< синтаксис >
::=DATESPLIT(дата-время выражение, параметр)< параметр >::= -
< синтаксис >
::=EXTRACT(элемент даты FROM дата-время выражение)< элемент даты >::={YEAR | MONTH | DAY | HOUR | MINUTE | SECOND}
Синтаксические правила
-
< Дата-время выражение >должно быть представлено в одном из форматов по умолчанию. -
< Дата-время выражение >может быть представлено в виде литерала типа< дата-время >. -
< Параметр >определяет возвращаемое функцией значение.Допустимы следующие значения
< параметра >:Значение параметра Возвращаемое значение 'D' День месяца 'M' Номер месяца 'QY' Номер квартала 'Y' Год 'DW' Номер дня недели 'DY' Номер дня в году 'WM' Номер недели в месяце 'WY' Номер недели в году 'ND' Номер дня от начала нашей эры 'NW' Номер недели от начала нашей эры 'NM' Номер месяца от начала нашей эры 'HH' Количество часов (диапазон 00-23) 'HH12' Количество часов (диапазон 0-12) 'HH24' Количество часов (диапазон 00-23) 'MI' Количество минут 'SS' Количество секунд 'FF' Количество тиков -
Функция
EXTRACTдобавлена для совместимости со стандартом SQL2008. -
< Элемент даты >определяет возвращаемое функцией значение:-
YEAR – год;
-
MONTH – месяц;
-
DAY – день;
-
HOUR – час;
-
MINUTE – минуты;
-
SECOND – секунды.
-
-
Аргументы
< дата-время выражение >и< параметр >могут быть заданы< SQL-параметром >, который должен содержать спецификацию типа данных параметра.select datesplit(? (date), ? (char(2))); 01.01.2013 qy | 1| select extract(hour from ? (date)); 01.01.2013:12:45 | 12|
Возвращаемое значение
Функция DATESPLIT:
-
Указанный элемент
< значимого выражения типа DATE >. -
Тип возвращаемого значения – INT.
Функция EXTRACT:
-
Значение DECIMAL со SCALE=0 для всех элементов даты, кроме SECOND.
-
Значение DECIMAL со SCALE=2 для элемента даты SECOND.
Примеры
select avg(datesplit(sysdate,'Y') -datesplit('28.04.1950','Y')) from person;
Определить, сколько длилась Великая Отечественная война:
select distinct 'Великая Отечественная война продолжалась '||
cast datesplit('09.05.1945','ND')- datesplit('22.06.1941','ND') as char(5) ||' дней';
|Великая Отечественная война продолжалась 1417 дней|
select datesplit (cast '04-11-2006' as date,'qy');
|4|
select sysdate, extract(month from sysdate); |12.08.2007:12:05:45.23| 8|