日期和时间函数

日期和时间函数根据 DATEDATETIME 处理数据。

函数 示例 说明 语法

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 代表中午 12 点,而 23 对应于晚上 11 点。

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_SECONDSQL_TSI_MINUTESQL_TSI_HOURSQL_TSI_DAYSQL_TSI_WEEKSQL_TSI_MONTHSQL_TSI_QUARTERSQL_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。或者,将此项与计算财政年度、季度和月提示相结合。
  • 一些主题区域包括预计算的“前 X”度量(例如 PY(prior year,前一年)、PQ(prior quarter,前一个季度)),您可以使用这些度量计算一段时间内的差异。
  • 或者,您可以使用 TIME SERIES 函数:AGO、PERIODROLLING 和 TODATE。请参见时间序列函数