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')
我有一个带有 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')