You can do with a view to limit the rows you want, eg
SQL> create table t1
2 as select rownum pk, trunc(sysdate)-rownum/1000 date_col, d.* from dba_objects d,
3 ( select 1 from dual connect by level <= 20 );
Table created.
SQL>
SQL> create table t2 as select * from t1;
Table created.
SQL>
SQL> alter table t1 modify date_col not null;
Table altered.
SQL> alter table t2 modify date_col not null;
Table altered.
SQL>
SQL> create index t1_ix on t1 ( date_col);
Index created.
SQL> create index t2_ix on t2 ( date_col);
Index created.
SQL>
SQL> alter table t1 add primary key ( pk );
Table altered.
SQL> alter table t2 add primary key ( pk );
Table altered.
SQL>
SQL>
SQL> set serverout on
SQL> set timing on
SQL> declare
2 l_scan_info dbms_comparison.comparison_type;
3 begin
4 dbms_comparison.create_comparison(
5 comparison_name => 'COMP1',
6 schema_name => user,
7 object_name => 'T1',
8 dblink_name => null,
9 remote_object_name => 'T2' );
10
11 if ( dbms_comparison.compare(
12 comparison_name => 'COMP1',
13 scan_info => l_scan_info ) )
14 then
15 dbms_output.put_line( 'TRUE: the same' );
16 else
17 dbms_output.put_line( 'FALSE: differences found' );
18 end if;
19 end;
20 /
TRUE: the same
PL/SQL procedure successfully completed.
Elapsed: 00:00:26.24
So a full table to table compare took 26 seconds. Now lets create a couple of views for just today's data
SQL> create or replace view V1 as select * from t1 where date_col > trunc(sysdate);
View created.
Elapsed: 00:00:00.05
SQL> create or replace view V2 as select * from t2 where date_col > trunc(sysdate);
View created.
Elapsed: 00:00:00.01
SQL> set serverout on
SQL> set timing on
SQL> declare
2 l_scan_info dbms_comparison.comparison_type;
3 begin
4 dbms_comparison.create_comparison(
5 comparison_name => 'COMP2',
6 schema_name => user,
7 object_name => 'V1',
8 dblink_name => null,
9 remote_object_name => 'V2' );
10
11 if ( dbms_comparison.compare(
12 comparison_name => 'COMP2',
13 scan_info => l_scan_info ) )
14 then
15 dbms_output.put_line( 'TRUE: the same' );
16 else
17 dbms_output.put_line( 'FALSE: differences found' );
18 end if;
19 end;
20 /
TRUE: the same
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.30
SQL>
SQL>