在sql中计算以前的日期

时间:2015-06-25 08:09:48

标签: sql oracle

我需要为每一天找到年龄,但我在一个查询中的所有先前日期都需要它。

例如:

Date_in     Age
24/JUN/15   20
23/JUN/15   19
22/JUN/15   18

是否有任何方法可以自动计算以前的日期并提供输出。

最终输出应显示如下:

request.get_data()

2 个答案:

答案 0 :(得分:0)

基本上,我们的想法是使用内联视图列出items表的所有日期。我假设每天都有一个creation_date。

然后使用笛卡尔积与项目表联接。

您可能需要过滤更多内容,而不确定您希望获得哪种结果。

SQLFiddle上我使用了此架构

CREATE TABLE items
( 
  item_id number,
  create_time date
);

insert into items values (1, sysdate-3);
insert into items values (2, sysdate-2);
insert into items values (3, sysdate-1);
insert into items values (4, sysdate);

测试此查询,这可能是您要求的

select 
b.system_date as date_in, (b.system_date-a.create_time) as age, a.item_id, a.create_time
from 
(select distinct create_time as system_date from items) b,
items a
order by date_in desc, age desc;

结果可在上面的链接中找到。

答案 1 :(得分:0)

Here is the Answer which worked for me:
select trunc(sysdate) - level + 1 dt       
, trunc(sysdate) - level + 1 - created_date  age    from items  
connect by trunc(sysdate) - level + 1 - created_date > 0; 

or

SELECT  (SYSDATE-rownum) AS DATE,
((SYSDATE - rownum)- create_time)Age
FROM items
connect by level <3