我有一个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
答案 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')
这将有助于您了解数据库中的时间戳值。