PLSQL:查询没有存储日期的星型模式时间维度

PLSQL: Query star schema time-dimension without stored date

我有一个带有 Hour-Dimension(时间维度)的星型模式数据库,其中包含以下列:

ID, ON_HOUR, ON_DAY, IN_MONTH, IN_YEAR

然后我查询数据库,我想根据这个小时维度查找给定日期间隔内的所有条目。

然而,将 ON_DAY 属性与间隔天数等与 IN_MONTH 和 IN_YEAR 进行比较,如果间隔跨越在几个月内。因此,我需要将这些值转换为时间戳,但是我正在查询数据库,那么如何正确地将给定的时间戳与时间数据进行比较?我的数据库中没有存储的 DATE 和 TIMESTAMP - 我应该更改它吗?

现在,我最好的选择是这样的:

to_timestamp('H.IN_YEAR-H.IN_MONTH-H.ON_DAY H.ON_HOUR:00:00', 'YYYY-MM-DD hh24:mi:ss')

然而这似乎行不通,而且看起来也很狡猾,所以我真的没想到它...

在我给定的日期间隔内获取条目的最佳方法是什么?

您似乎将文字字符串传递给时间戳函数 - 您需要使用 concat 函数将值作为串联字符串传递。试试下面的代码片段

(H.IN_YEAR||H-IN_MONTH||H.ON_DAY||H.ON_HOUR,'YYYMMDDHH24')