2017-09-25 235 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

在將任何內容發佈到本網站之前,請關閉大寫鎖定鍵。 –