Sql 在Oracle中返回上一年的数据

Sql 在Oracle中返回上一年的数据,sql,oracle,Sql,Oracle,下面返回数据类型为date的所有值 select date_sent_to_registrations from tblquotesnew 我怎样才能只返回上一年的记录呢。因此,如果我今天运行查询,它将只返回2016年的那些记录?试试以下方法: select date_sent_to_registrations from tblquotesnew WHERE TRUNC(date_sent_to_registrations,'YYYY')=TRUNC(ADD_MONTHS(SYSDATE,-1

下面返回数据类型为date的所有值

select date_sent_to_registrations from tblquotesnew
我怎样才能只返回上一年的记录呢。因此,如果我今天运行查询,它将只返回2016年的那些记录?

试试以下方法:

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' );
SELECT *
FROM   tblquotesnew
WHERE  TRUNC( date_sent_to_registrations, 'YYYY' ) = ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 );
试试这个:

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' );
SELECT *
FROM   tblquotesnew
WHERE  TRUNC( date_sent_to_registrations, 'YYYY' ) = ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 );
您可以使用:

SELECT *
FROM   tblquotesnew
WHERE  date_sent_to_registrations >= ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 )
AND    date_sent_to_registrations <  TRUNC( SYSDATE, 'YYYY' );
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' );
您可以使用:

SELECT *
FROM   tblquotesnew
WHERE  date_sent_to_registrations >= ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 )
AND    date_sent_to_registrations <  TRUNC( SYSDATE, 'YYYY' );
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' );

这将不会在发送到注册的日期使用索引,并且需要基于TRUNCdate发送到注册的函数索引,改为“YYYY”。在将任何其他内容发布到此网站之前,请关闭caps lock键。这将不会使用“发送到”注册日期的索引,并且需要基于TRUNCdate\u发送到\u注册的函数索引,改为“yyy”。在将任何其他内容发布到此网站之前,请关闭caps lock键。