![]() |
|
Функции даты/времени календаряФункции даты/времени календаря служат для преобразования данных в типах данных, соответствующих дате, времени и метке времени (тип данных 'метка времени' является сочетанием даты и времени). Все функции дат соответствуют стандарту ISO 8601. В частности, это затрагивает такие функции, как "Неделя_года" и "Неделя_квартала", где начальной неделей года является первая полная неделя, которая включает четверг. Подробные сведения о расчете функций дат см. в стандарте ISO 8601. Current_DateВозвращает текущую дату. Дата определяется компьютером. Значение не содержит компонента времени. Синтаксис: CURRENT_DATE Current_TimeВозвращает текущее время. Время определяется компьютером. Это значение не содержит компонент даты. Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность. Синтаксис: CURRENT_TIME (n) где:
Current_TimeStampВозвращает текущую дату/метку времени. Штамп времени определяется компьютером. Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность. Синтаксис: CURRENT_TIMESTAMP (n) где:
Day_Of_QuarterВозвращает число (в диапазоне от 1 до 92), соответствующее дню квартала для указанной даты. Синтаксис: DAY_OF_QUARTER (date_expression) где:
DayNameВозвращает название дня недели (на английском языке) для указанной даты. Синтаксис: DAYNAME (date_expression) где:
DayOfMonthВозвращает число, соответствующее дню месяца, для указанной даты. Синтаксис: DAYOFMONTH (date_expression) где:
DayOfWeekВозвращает число от 1 до 7, соответствующее дню недели, для указанной даты. Число 1 соответствует воскресенью, число 7 - субботе. Синтаксис: DAYOFWEEK (date_expression) где:
DayOfYearВозвращает число от 1 до 366, соответствующее дню года, для указанной даты. Синтаксис: DAYOFYEAR (date_expression) где:
ЧасВозвращает число от 0 до 23, соответствующее часу для указанного времени. Например, 0 соответствует 12 AM, 23 соответствует 11 PM. Синтаксис: HOUR (time_expression) где:
МинутаВозвращает число от 0 до 59, соответствующее минуте для указанного времени. Синтаксис: MINUTE (time_expression) где:
МесяцВозвращает число от 1 до 12, соответствующее месяцу для указанной даты. Синтаксис: MONTH (date_expression) где:
Month_Of_QuarterВозвращает число от 1 до 3, соответствующее месяцу в квартале для указанной даты. Синтаксис: MONTH_OF_QUARTER (date_expression) где:
MonthNameВозвращает название месяца (на английском языке) для указанной даты. Синтаксис: MONTHNAME (date_expression) где:
СейчасВозвращает текущую метку времени. Функция NOW эквивалентна функции CURRENT_TIMESTAMP. Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность. Синтаксис: NOW () Quarter_Of_YearВозвращает число от 1 до 4, соответствующее кварталу года для указанной даты. Синтаксис: QUARTER_OF_YEAR (date_expression) где:
СекундаВозвращает число от 0 до 59, соответствующее секундам для указанного времени. Синтаксис: SECOND (time_expression) где:
TimestampAddФункция TimestampAdd прибавляет указанное число интервалов к указанной метке времени. Возвращается одна метка времени. Синтаксис: TimestampAdd (interval, integer_expression, timestamp_expression) где:
Если в качестве аргументов этой функции передается целочисленное выражение null или выражение-метка времени null, эта функция возвращает значение null. В простейшем сценарии эта функция прибавляет указанное значение интервала (integer_expression) к компоненту метки времени, соответствующему интервалу. Прибавление недели приводит к прибавлению семи дней, а прибавление квартала - к прибавлению трех месяцев. Отрицательные целочисленные значения приводят к вычитанию (прошедшему времени в результате). Переполнение указанного компонента (например, превышение значения 60 секунд, 24 часов, 12 месяцев и т. п.) вызывает прибавление соответствующей величины к следующему компоненту. Например, при прибавлении значения к компоненту дня в метке времени данная функция отслеживает переполнение с учетом количества дней в конкретном месяце (включая високосные годы, когда в феврале 29 дней). При прибавлении компонента месяца к метке времени эта функция проверяет, что результирующая метка времени имеет допустимое число дней для компонента "день". Например, при прибавлении 1 месяца к метке времени 2000-05-31 в результате не получится 2000-06-31, поскольку в июне нет 31 дня. Эта функция уменьшает компонент "день" до последнего дня месяца, в данном примере - 2000-06-30. Аналогичная ситуация возникает при прибавлении к компоненту года для метки времени с компонентом месяца, равным февралю, и компонентом дня, равным 29 (последним днем февраля в високосном году). Если результирующая метка времени не попадает в високосный год, данная функция уменьшает компонент дня до 28. Примеры работы функции TimestampAdd: В следующем примере кода запрашивается метка времени, получаемая в результате прибавления 3 дней к значению 2000-02-27 14:30:00. Поскольку 2000 - високосный год, эта функция возвращает метку времени 2000-03-01 14:30:00. TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP‘2000-02-27 14:30:00’) В следующем примере кода запрашивается результирующая метка времени, когда 7 месяцев прибавляются к 1999-07-31 0:0:0. При этом возвращается метка времени 2000-02-29 00:00:00. Обратите внимание на уменьшение компонента "день" до 29, поскольку в феврале меньшее число дней. TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP‘1999-07-31 00:00:00’) В следующем примере кода запрашивается результирующая метка времени, когда 25 минут прибавляется к 2000-07-31 23:35:00. При этом возвращается метка времени 2000-08-01 00:00:00. Обратите внимание на распространение переполнения до компонента "месяц". TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP‘2000-07-31 23:35:00’) TimeStampDiffФункция TimestampDiff возвращает общее количество указанных интервалов между двумя метками времени. Синтаксис: TimestampDiff (interval, timestamp_expression1, timestamp_expression2) где:
Если этой функции передается выражение-метка времени null, возвращается значение null. Эта функция сначала определяет компонент метки времени, который соответствует параметру интервала. Например, SQL_TSI_DAY соответствует компоненту "день", а SQL_TSI_MONTH соответствует компоненту "месяц". Эта функция анализирует компоненты высшего порядка обеих меток времени для вычисления числа интервалов для каждой метки времени. Например, если указанный интервал соответствует компоненту "месяц", функция вычисляет общее число месяцев для каждой метки времени путем сложения компонента "месяц" и увеличенного в 12 раз компонента "год". В заключение функция вычитает общее число интервалов первой метки из общего числа интервалов второй метки. При расчете разницы в днях функция усекает значения времени из обоих выражений меток времени, а затем вычитает значения дат. При вычислении разности в неделях функцией подсчитывается разность в днях, которая делится на семь перед округлением. При вычислении разности в кварталах функцией подсчитывается разность в месяцах, которая делится на три перед округлением. При расчете разницы в годах функция рассчитывает разницу в месяцах и делит ее на двенадцать перед округлением. Функция TimestampDiff и пример результатовВ следующем примере кода запрашивается результирующая разность в днях между метками времени 1998-07-31 23:35:00 и 2000-04-01 14:24:00. Функция возвращает значение 610. Обратите внимание, что к результату добавляется дополнительный день в связи с високосным годом (2000). TimestampDIFF(SQL_TSI_DAY, TIMESTAMP‘1998-07-31 23:35:00’, TIMESTAMP‘2000-04-01 14:24:00’) Week_Of_QuarterВозвращает число (от 1 до 13), соответствующее неделе квартала для указанной даты. Синтаксис: WEEK_OF_QUARTER (date_expression) где:
Week_Of_YearВозвращает число (от 1 до 53), соответствующее неделе года для указанной даты. Синтаксис: WEEK_OF_YEAR (date_expression) где:
ГодВозвращает год для указанной даты Синтаксис: YEAR (date_expression) где:
Пример. YEAR (CURRENT_DATE) |
Опубликовано в Сентябрь 2017 | Copyright © Oracle, 2005, 2017 гг. Все права защищены.Legal Notices. |