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

时间:2016-04-01 09:43:33

标签: sql oracle date plsql star-schema

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

ID, ON_HOUR, ON_DAY, IN_MONTH, IN_YEAR

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

然而,将IN_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')

但这似乎不起作用,而且看起来也很狡猾,所以我并没有真正期待它...

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

1 个答案:

答案 0 :(得分:1)

您似乎将文字字符串传递给时间戳函数 - 您需要使用concat函数将值作为连接字符串传递。请尝试以下代码段

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