我想构建一个查询,它返回最大时间戳前 45 分钟的所有记录。
例如时间戳最新的记录是:
01.09.2013 11:00:00
现在我想从
01.09.2013 10:15:00 to 11:00:00
我想构建一个查询,它返回最大时间戳前 45 分钟的所有记录。
例如时间戳最新的记录是:
01.09.2013 11:00:00
现在我想从
01.09.2013 10:15:00 to 11:00:00
您可以通过使用Max
聚合/分析函数和interval
语句来完成此操作:这是一个示例:
select col
from ( select col
, max(col) over() as max_time
from t1) t
where t.col between t.max_time - interval '45' minute
and t.max_time
结果:
Col
--------------------
01.09.13 11:00:00 AM
01.09.13 10:45:00 AM
01.09.13 10:30:00 AM
01.09.13 10:15:00 AM
with cte as
(select max(the_timestamp_field) the_timestamp_field
from test)
select
*
from
test,cte
where
test.the_timestamp_field between cte.the_timestamp_field - (1/24*.75)
and cte.the_timestamp_field
会做的。
可以简单也可以复杂一点,这取决于您要如何确定记录的创建时间。如果您的表中有一个日期列指示创建时间,这很简单:
SELECT columns
FROM table
WHERE date_column BETWEEN TO_DATE ('01.09.2013 10:15', 'MM.DD.YYYY HH24:MI') AND
TO_DATE('01.09.2013 11:00', 'MM.DD.YYYY HH24:MI')
如果没有日期列,您可以使用SCN_TO_TIMESTAMP
( ORA_ROWSCN
) 伪列来确定创建时间,但请注意此功能需要10g
或更高版本。