Выделение заданных элементов даты (DATESPLIT/EXTRACT)
Функция
Выделение заданных элементов даты.
Спецификация
Варианты:
-
<синтаксис>
::=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|