如何从Oracle表中检索最后一天的数据?
我有,我想取回最后几天或最后10分钟的数据Oracle数据库:如何从Oracle表中检索最后一天的数据?
我尤斯该命令先:
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数据时间格式。
有没有办法在这之前,时间戳格式到Oracle时间戳格式:
TIMESTAMP>SYSDATE -1
意味着你的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')
这将帮助你了解你在你的数据库中有哪些时间戳值。
@Olilie Jones,我尝试转换TIMESTAMP,如下所示:从TIMESTAMP> SYSDATE-1的表名中选择将TIMESTAMP转换为TIMESTAMP作为TIMESTAMP,但仍得到几小时的数据。 – user1471980 2015-02-06 21:12:08
为什么选择CAST? Ollie的答案没有使用CAST?不要添加到答案。 ;)也许如果你展示一个你有什么样的小样本,我们可以看到你做错了什么;)相信我们......奥尔放什么工作..只是复制/经过他的WHERE子句到你的查询中另一个说明,使用名为“TIMESTAMP”的列可能不是最好的想法:P) – Ditto 2015-02-06 21:27:01
你为什么要猜测?你不能看看你的模式吗? – 2015-02-06 21:04:03
@ PM77-1,我不能这不是我的数据库。我没有权利。 – user1471980 2015-02-06 21:05:27
@ user1471980:DESC metric_table;或从metric_table中选择dump(timestamp),其中rownum = 1;或从all_tables中选择* where table_name ='METRIC_TABLE';如果你可以运行你的查询,你当然可以看到表定义。 – Ditto 2015-02-06 21:16:14