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