将另一个表列的值分配给当前的选择查询

时间:2017-07-11 11:45:53

标签: sql database oracle date unix-timestamp

我正在编写以下查询以获取小时工作间隔的记录

SELECT *
FROM gw_lob_store
WHERE created_ts<(round(((sysdate-interval '30' MINUTE) - to_date('19700101 000000', 'YYYYMMDD HH24MISS'))*86400));

这里分钟&#39; 30&#39;在上面的查询中我想从另一个表列(在查询下面)获取并分配它,请让我知道如何做到这一点

select prop_value
from gw_prop_config
where prop_name='lobStoreJobTime'

其中prop_value的值为&#39; 30&#39;我想分配

注意:这两个表没有任何匹配的列。

2 个答案:

答案 0 :(得分:2)

我认为你不能用一个变量替换INTERVAL表达式中的文字“30”。

但是,由于SYSDATE是DATE而不是TIMESTAMP,sysdate-interval '30' MINUTEsysdate-30/60/24相同,因此您可以重写为:

SELECT *
FROM gw_lob_store
WHERE created_ts < round(((sysdate-(select to_number(prop_value)/60/24
                                      from gw_prop_config
                                     where prop_name='lobStoreJobTime'
                                   )
                          ) - date '1970-01-01'
                         )*86400
                        )

答案 1 :(得分:1)

主要有两种选择:

1)30分钟的间隔等于30分钟的间隔:

sysdate - (interval '1' minute * prop_value)

2)根据数字计算分钟数:

sysdate - numtodsinterval(prop_value, 'minute')