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

Функции даты и времени управляют данными на основе переменных DATE и DATETIME.

Функция Пример Описание Синтаксис

CURRENT_Date

CURRENT_DATE

Возвращает текущую дату.

Дата определяется системой, в которой запущен компонент Oracle BI.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

Возвращает текущее время с указанным числом разрядов точности, например: HH:MM:SS.SSS

Если аргумент не указан, функция возвращает стандартную точность.

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

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

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

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

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

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

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

Возвращает число от 1 до 7, соответствующее дню недели для указанного выражения даты. Пример: 1 всегда соответствует воскресенью, 2 — понедельнику и т. д. до субботы, соответствующей числу 7.

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

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

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

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

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

Возвращает число (от 0 до 23), соответствующее часу для указанного выражения даты. Пример: 0 соответствует 00:00, а 23 — 23:00.

HOUR(expr)

MINUTE

MINUTE(Order_Time)

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

MINUTE(expr)

MONTH

MONTH(Order_Time)

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

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

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

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

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

MONTH_OF_QUARTER(expr)

NOW

NOW()

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

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

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

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

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

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

Добавляет указанное число интервалов к метке времени и возвращает одну метку времени.

Варианты интервалов: SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_YEAR

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

Возвращает общее число указанных интервалов между двумя метками времени.

Используются те же интервалы, что и для функции TIMESTAMPADD.

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

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

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

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

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

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

YEAR(expr)

Советы по использованию функций дат

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

Расчет финансового года, квартала и месяца

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

На этом примере рассчитывается финансовый квартал:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||'Q'||cast(QUARTER(TIMESTAMPADD(SQL_TSI_MONTH, 7,<same date field>)) as char)

На этом примере рассчитывается финансовый год и месяц:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)

Примечания

  • || объединяет значения.
  • cast (xxx(date) as char) извлекает часть поля даты.
  • TIMESTAMPADD добавляет или вычитает периоды из даты. В этом примере для добавления месяцев используется значение параметра SQL_TSI_MONTH.

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

'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-Q'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<same date field>,7)),'Q')
'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-'||evaluate ('to_char(%1,%2)'as char,<same date field>,'MON')

Преобразование строки в дату

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

  • В конструкторе рабочей книги перейдите на панели данных к столбцу, который нужно преобразовать, затем нажмите правую кнопку мыши и выберите Редактировать. Настройте дату и нажмите Добавить шаг.

    В текстовом поле, содержащем имя столбца синим цветом, вставьте To_DateTime( перед именем столбца, затем добавьте формат даты, который будет использоваться, после названия столбца, далее введите ) и нажмите Добавить шаг.
    Описание GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png ниже
    .png

    При использовании параметра "Редактировать" для создания функции преобразования даты можно использовать аргументы Allow_Variable_Digits для обработки значений столбцов с однозначными или двузначными числами, а также Null_On_Error для исключения строк, не соответствующих требуемому шаблону. Рассмотрите также REPLACE и CAST в качестве альтернативных способов обработки данных, которые не соответствуют требуемому шаблону.

    В качестве альтернативы To_DateTime() используйте CAST(), чтобы изменить тип данных значения. Например, CAST(SalesDate AS DATE).

    Кроме того, можно использовать параметр Заменить. В конструкторе рабочей книги перейдите на панели данных к столбцу, который нужно преобразовать, затем нажмите правую кнопку мыши и выберите Заменить. Настройте тип замены и нажмите Добавить шаг.

Отображение поля даты и времени в определенном часовом поясе

Используйте функцию NEW_TIME в базе данных совместно с EVALUATE. Пример:

evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')

Убедитесь, что поле даты включает компонент времени.

Расчет разницы во времени

Для демонстрации разницы в количестве и процентах между сегодняшним и вчерашним днем выполните расчеты на основе этих примеров:
  • Вычислите показатель до вчерашнего дня: filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Вычислите разницу: Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Вычислите разницу в процентах: 1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage

Примечания

  • В этих примерах используется SQL_TSI_DAY, однако в качестве альтернативы можно использовать WEEK и MONTH для недели за неделей и месяца за месяцем, соответственно.
  • Эти примеры работают с обычным или естественным календарем. Если требуются финансовые месяцы и кварталы, используйте в расчетах переменные репозитория вместо TIMESTAMPADD. Также можно объединить это с советом Расчет финансового года, квартала и месяца.
  • Некоторые предметные области включают предварительно рассчитанные показатели Prior X, такие как PY (предыдущий год), PQ (предыдущий квартал), которые можно использовать для расчета разницы во времени.
  • Кроме того, можно использовать функции TIME SERIES: AGO, PERIODROLLING и TODATE. См. раздел "Функции временного ряда".