Печать      Открыть версию интерактивной справки в формате PDF


Предыдущий раздел

Следующий раздел

Функции даты/времени календаря

Функции даты/времени календаря служат для преобразования данных в типах данных, соответствующих дате, времени и метке времени (тип данных 'метка времени' является сочетанием даты и времени).

Все функции дат соответствуют стандарту ISO 8601. В частности, это затрагивает такие функции, как "Неделя_года" и "Неделя_квартала", где начальной неделей года является первая полная неделя, которая включает четверг. Подробные сведения о расчете функций дат см. в стандарте ISO 8601.

Current_Date

Возвращает текущую дату. Дата определяется компьютером. Значение не содержит компонента времени.

Синтаксис:

CURRENT_DATE

Current_Time

Возвращает текущее время. Время определяется компьютером. Это значение не содержит компонент даты.

Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность.

Синтаксис:

CURRENT_TIME (n)

где:

n

Любое целое число, представляющее число цифр, определяющих точность, с которой отображается дробная часть секунд. Аргумент не является обязательным; если аргумент не указан, функция возвращает значение с точностью, заданной по умолчанию.

Current_TimeStamp

Возвращает текущую дату/метку времени. Штамп времени определяется компьютером.

Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность.

Синтаксис:

CURRENT_TIMESTAMP (n)

где:

n

Любое целое число, представляющее число цифр, определяющих точность, с которой отображается дробная часть секунд. Аргумент не является обязательным; если аргумент не указан, функция возвращает значение с точностью, заданной по умолчанию.

Day_Of_Quarter

Возвращает число (в диапазоне от 1 до 92), соответствующее дню квартала для указанной даты.

Синтаксис:

DAY_OF_QUARTER (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

DayName

Возвращает название дня недели (на английском языке) для указанной даты.

Синтаксис:

DAYNAME (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

DayOfMonth

Возвращает число, соответствующее дню месяца, для указанной даты.

Синтаксис:

DAYOFMONTH (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

DayOfWeek

Возвращает число от 1 до 7, соответствующее дню недели, для указанной даты. Число 1 соответствует воскресенью, число 7 - субботе.

Синтаксис:

DAYOFWEEK (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

DayOfYear

Возвращает число от 1 до 366, соответствующее дню года, для указанной даты.

Синтаксис:

DAYOFYEAR (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Час

Возвращает число от 0 до 23, соответствующее часу для указанного времени. Например, 0 соответствует 12 AM, 23 соответствует 11 PM.

Синтаксис:

HOUR (time_expression)

где:

time_expression

Любое выражение, преобразуемое во время.

Минута

Возвращает число от 0 до 59, соответствующее минуте для указанного времени.

Синтаксис:

MINUTE (time_expression)

где:

time_expression

Любое выражение, преобразуемое во время.

Месяц

Возвращает число от 1 до 12, соответствующее месяцу для указанной даты.

Синтаксис:

MONTH (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Month_Of_Quarter

Возвращает число от 1 до 3, соответствующее месяцу в квартале для указанной даты.

Синтаксис:

MONTH_OF_QUARTER (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

MonthName

Возвращает название месяца (на английском языке) для указанной даты.

Синтаксис:

MONTHNAME (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Сейчас

Возвращает текущую метку времени. Функция NOW эквивалентна функции CURRENT_TIMESTAMP.

Примечание. Данная функция позволяет получить текущее время в процессе выполнения отчета. Использование этой функции вместе с предметной областью аналитики дает возможность избежать кэширования отчета, снижающего производительность.

Синтаксис:

NOW ()

Quarter_Of_Year

Возвращает число от 1 до 4, соответствующее кварталу года для указанной даты.

Синтаксис:

QUARTER_OF_YEAR (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Секунда

Возвращает число от 0 до 59, соответствующее секундам для указанного времени.

Синтаксис:

SECOND (time_expression)

где:

time_expression

Любое выражение, преобразуемое во время.

TimestampAdd

Функция TimestampAdd прибавляет указанное число интервалов к указанной метке времени. Возвращается одна метка времени.

Синтаксис:

TimestampAdd (interval, integer_expression, timestamp_expression)

где:

интервал

Указанный интервал. Допустимые значения:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

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)

где:

интервал

Указанный интервал. Допустимые значения:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

timestamp_expression1

Метка времени, вычитаемая из второй метки времени.

timestamp_expression2

Вторая метка времени. timestamp_expression1 вычитается из этой метки времени для определения разности.

Если этой функции передается выражение-метка времени 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)

где:

date_expression

Любое выражение, преобразуемое в дату.

Week_Of_Year

Возвращает число (от 1 до 53), соответствующее неделе года для указанной даты.

Синтаксис:

WEEK_OF_YEAR (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Год

Возвращает год для указанной даты

Синтаксис:

YEAR (date_expression)

где:

date_expression

Любое выражение, преобразуемое в дату.

Пример.

YEAR (CURRENT_DATE)


Опубликовано в Август 2018 Copyright © Oracle, 2005, 2018 гг. Все права защищены.Legal Notices.