在 Oracle Analytics 中,管理员在系统设置中设置用于计算日期和时间的默认时区。此全局设置应用于所有计算。本主题介绍如果要在某个特定计算中使用其他时间戳,如何使用 TIMESTAMPADD
函数指定其他时区。
在“系统设置”中设置用于计算的默认时区
CURRENT_DATE
CURRENT_TIME()
CURRENT_TIMESTAMP()
NOW()
作为管理员,您可以使用控制台中高级系统设置下的用于计算日期的默认时区选项更改计算中使用的时间戳。从下拉列表中选择所需的时区,然后应用所做的更改以使新值生效。
有关全球时区设置的更多信息,请参见系统设置 — 格式选项。
在计算中为时间戳使用特定时区
要在计算中生成系统设置以外的时间戳,请将 TIMESTAMPADD
函数与 CURRENT_TIMESTAMP()
或 NOW()
结合使用。基本的 TIMESTAMPADD
计算如下所示:
TIMESTAMPADD(SQL_TSI_<<interval>>, <<integer expression>>, <<timestamp expression>>)
对于时间戳计算,HOUR
是时间间隔,时间偏移量是 UTC 与要报告的时区之间的小时差。例如:
TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP(5))
此计算以美国山地时间返回当前时间戳。您可以将新时间戳列创建为逻辑表源中的派生列,也可以将其直接映射到数据库。二者的区别在于要在何处执行计算;即,前者在 Oracle Analytics 中,后者在数据库中。下图显示了“表达式构建器 - 表达式”对话框中直接映射到数据库的计算。
当默认时区设置为 UTC 时,对于相对于用户时区的一天中的某些时段,CURRENT_DATE
函数不会返回正确日期。例如,当时间为 UTC 午夜时,对于时间偏移量的持续时间,本地日期与 UTC 日期不匹配。
将时间戳计算强制转换为日期可解决此问题。例如:
cast(TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP) as date)
下图显示了“表达式构建器 - 派生的逻辑列”对话框中创建为派生列的计算。
对于唯一或单个报表,在数据可视化或经典分析中,可以在报表级别创建时间戳计算。如果您打算重用这些计算,将它们定义为语义模型(或 RPD 文件)中的列通常会更方便。