Функции даты и времени управляют данными на основе переменных DATE
и DATETIME
.
Функция | Пример | Описание | Синтаксис |
---|---|---|---|
CURRENT_Date |
|
Возвращает текущую дату. Дата определяется системой, в которой запущен компонент Oracle BI. |
|
CURRENT_TIME |
|
Возвращает текущее время с указанным числом разрядов точности, например: HH:MM:SS.SSS Если аргумент не указан, функция возвращает стандартную точность. |
|
CURRENT_TIMESTAMP |
|
Возвращает текущую метку даты/времени с указанным числом разрядов точности. |
|
DAYNAME |
|
Возвращает название дня недели для указанного выражения даты. |
|
DAYOFMONTH |
|
Возвращает число, соответствующее дню месяца для указанного выражения даты. |
|
DAYOFWEEK |
|
Возвращает число от 1 до 7, соответствующее дню недели для указанного выражения даты. Пример: 1 всегда соответствует воскресенью, 2 — понедельнику и т. д. до субботы, соответствующей числу 7. |
|
DAYOFYEAR |
|
Возвращает число (от 1 до 366), соответствующее дню года для указанного выражения даты. |
|
DAY_OF_QUARTER |
|
Возвращает число (от 1 до 92), соответствующее дню квартала для указанного выражения даты. |
|
HOUR |
|
Возвращает число (от 0 до 23), соответствующее часу для указанного выражения даты. Пример: 0 соответствует 00:00, а 23 — 23:00. |
|
MINUTE |
|
Возвращает число (от 0 до 59), соответствующее минуте для указанного выражения даты. |
|
MONTH |
|
Возвращает число (от 1 до 12), соответствующее месяцу для указанного выражения даты. |
|
MONTHNAME |
|
Возвращает название месяца для указанного выражения даты. |
|
MONTH_OF_QUARTER |
|
Возвращает число (от 1 до 3), соответствующее месяцу квартала для указанного выражения даты. |
|
NOW |
|
Возвращает текущую метку времени. Функция |
|
QUARTER_OF_YEAR |
|
Возвращает число (от 1 до 4), соответствующее кварталу года для указанного выражения даты. |
|
SECOND |
|
Возвращает число (от 0 до 59), соответствующее секундам для указанного выражения даты. |
|
TIMESTAMPADD |
|
Добавляет указанное число интервалов к метке времени и возвращает одну метку времени. Варианты интервалов: SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_YEAR |
|
TIMESTAMPDIFF |
|
Возвращает общее число указанных интервалов между двумя метками времени. Используются те же интервалы, что и для функции TIMESTAMPADD. |
|
WEEK_OF_QUARTER |
|
Возвращает число (от 1 до 13), соответствующее неделе квартала для указанного выражения даты. |
|
WEEK_OF_YEAR |
|
Возвращает число (от 1 до 53), соответствующее неделе года для указанного выражения даты. |
|
YEAR |
|
Возвращает год для указанного выражения даты. |
|
Вот несколько советов, которые помогут достичь наилучших результатов при использовании функций даты в рабочих книгах для расчета финансовых периодов, преобразования строк в даты, отображения даты и времени в определенном часовом поясе и расчета разницы во времени.
Расчет финансового года, квартала и месяца
Предметные области обычно имеют временное измерение, поэтому можно использовать предварительно настроенные периоды, такие как финансовый квартал, финансовый месяц и финансовая неделя. Если есть только поле даты, можно рассчитать эти периоды самостоятельно, используя функции даты.
На этом примере рассчитывается финансовый квартал:
'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')
Преобразование строки в дату
В текстовом поле, содержащем имя столбца синим цветом, вставьте To_DateTime(
перед именем столбца, затем добавьте формат даты, который будет использоваться, после названия столбца, далее введите )
и нажмите Добавить шаг.
.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 для недели за неделей и месяца за месяцем, соответственно.