2017-09-25 178 views
0

返回前一年的数据我怎么能上一年度只返回记录的下方将返回日期在甲骨文

select date_sent_to_registrations from tblquotesnew 

的数据类型的所有值。那么,如果我今天运行查询,它将只返回2016年的那些记录?

回答

2

您可以使用:

SELECT * 
FROM tblquotesnew 
WHERE TRUNC(date_sent_to_registrations, 'YYYY') = ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -12); 

然而,TRUNC(date_sent_to_registrations, 'YYYY')会不允许您在date_sent_to_registrations列上使用索引(您需要使用功能库d指数代替),以更高效的版本是:

SELECT * 
FROM tblquotesnew 
WHERE date_sent_to_registrations >= ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -12) 
AND date_sent_to_registrations < TRUNC(SYSDATE, 'YYYY'); 
0

试试这个:

select date_sent_to_registrations from tblquotesnew 
WHERE TRUNC(date_sent_to_registrations,'YYYY')=TRUNC(ADD_MONTHS(SYSDATE,-12),'YYYY') 

如果你对此列分区或索引,您可以使用:

SELECT * 
FROM tblquotesnew 
WHERE date_sent_to_registrations >= ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -12) 
AND date_sent_to_registrations < TRUNC(SYSDATE, 'YYYY'); 
+0

这不会使用在'date_sent_to_registrations'指标,就需要对'TRUNC(date_sent_to_registrations,“YYYY”)',而不是基于函数的索引。 – MT0

+0

在将任何内容发布到本网站之前,请关闭大写锁定键。 –