日期和时间函数根据 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 代表中午 12 点,而 23 对应于晚上 11 点。 |
|
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 计算周环比和月环比差异值。