如何从Oracle表中检索最后几天的数据?

时间:2015-02-06 21:00:06

标签: oracle

我有一个oracle数据库,我想检索最后几天或最后10分钟的数据:

我首先使用这个命令:

alter session set nls_date_format='dd-mm-yyyy hh24:mi:ss'

然后这个:

select TIMESTAMP, TARGET_NAME, TARGET_TYPE, COLUMN_LABEL, VALUE, KEY_VALUE from METRIC_TABLE where TIMESTAMP > sysdate -1

这个命令没有给我最后几天的数据,它只给我最后几个小时的数据。我怀疑TIMESTAMP列不是Oracle数据时格式。

在执行此操作之前,有没有办法将TIMESTAMP格式化为Oracle时间戳格式:

TIMESTAMP>SYSDATE -1

1 个答案:

答案 0 :(得分:4)

假设您的TIMESTAMP列包含普通日期/时间变量:

SELECT whatever FROM table WHERE TIMESTAMP >= SYSDATE -1

获得比24小时前更新的一切。

SELECT whatever FROM table WHERE TIMESTAMP >= SYSDATE - (10.0 / 1440.0)

获得比十分钟前更新的一切。

SELECT whatever FROM table WHERE TIMESTAMP >= TRUNC(SYSDATE)

比昨晚午夜更新。

SELECT whatever FROM table WHERE TIMESTAMP >= TRUNC(SYSDATE) -1
                             AND TIMESTAMP < TRUNC(SYSDATE)

从昨天开始获取所有内容。

修改专业提示:请勿将TIMESTAMP等保留字用于列名。

尝试计算过去5天内每小时有多少记录,如下所示:

 SELECT TO_CHAR(TRUNC(timestamp, 'HH24'), 'DD-MON-YYYY HH24:MI:SS') hr,
        COUNT(*)
   FROM METRIC_TABLE
  WHERE timestamp >= TRUNC(sysdate) -5
  GROUP BY TRUNC(timestamp, 'HH24')

这将有助于您了解数据库中的时间戳值。