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