Oracle Max Timestamp-减去45分钟

时间:2013-09-11 19:36:22

标签: oracle oracle11g oracle-sqldeveloper

我想构建一个查询,它在最大时间戳之前45分钟返回所有记录。

例如,具有最新时间戳的记录是:

01.09.2013 11:00:00

现在我希望收到

的所有记录
01.09.2013 10:15:00 to 11:00:00

3 个答案:

答案 0 :(得分:4)

您可以使用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 

SQLFiddle Demo

答案 1 :(得分:3)

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

会这样做。

答案 2 :(得分:0)

它可以简单而复杂,具体取决于您如何确定记录的创建时间。如果表格中有一个日期列,表示创建时间很简单:

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_TIMESTAMPORA_ROWSCN)伪列来确定创建时间,但请注意,此项目需要10g或更高版本。