以下内容返回数据类型为日期
的所有值select date_sent_to_registrations from tblquotesnew
如何只返回上一年的记录。那么,如果我今天运行查询,它将仅返回2016年的那些记录?
答案 0 :(得分: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
列上使用索引(您需要使用基于函数的索引),因此更高效的版本将是:
SELECT *
FROM tblquotesnew
WHERE date_sent_to_registrations >= ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 )
AND date_sent_to_registrations < TRUNC( SYSDATE, 'YYYY' );
答案 1 :(得分: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' );