I couldn't replicate your findings, eg
SQL> create table t ( pk int, ts date, m clob );
Table created.
SQL> set serverout on
SQL> declare
2 c clob;
3 begin
4 c := 'asd qwe qwe qwe qw eas das dasd qwe qwe q we';
5 for i in 1 .. 10 loop
6 c := c || c;
7 end loop;
8 c := c || 'Hello';
9 dbms_output.put_line('len='||length(c));
10
11 insert /*+ APPEND */ into t
12 select rownum, date '2020-01-01'+trunc(rownum/40000), c
13 from dual
14 connect by level <= 40100;
15 commit;
16 end;
17 /
len=45061
PL/SQL procedure successfully completed.
SQL> set timing on
SQL> select count(*)
2 from t
3 where ts > date '2020-01-01';
COUNT(*)
----------
101
Elapsed: 00:00:00.00
SQL> select count(*)
2 from t
3 where ts > date '2020-01-01'
4 and m like '%Hello%';
COUNT(*)
----------
101
Elapsed: 00:00:00.26
SQL> select count(*)
2 from t
3 where m like '%Hello%';
COUNT(*)
----------
40100
Elapsed: 00:01:34.07
So you can see that we must have evaluated the date first. But let's assume that this *is* the case, and the clob is being checked. You could subvert that by just getting the rows that match the date, and then joining back to the table, eg
SQL> with rids as
2 ( select /*+ materialize */ rowid r
3 from t
4 where ts > date '2020-01-01'
5 )
6 select /*+ leading(rids t) use_nl(t) */ count(*)
7 from t, rids
8 where t.rowid = rids.r
9 and t.m like '%Hello%';
COUNT(*)
----------
101
Elapsed: 00:00:00.28
------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 65 | 20172 (1)| 00:00:01 |
| 1 | TEMP TABLE TRANSFORMATION | | | | | |
| 2 | LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D676F_D1488ECE | | | | |
|* 3 | TABLE ACCESS FULL | T | 20050 | 391K| 94 (2)| 00:00:01 |
| 4 | SORT AGGREGATE | | 1 | 65 | | |
| 5 | NESTED LOOPS | | 1003 | 65195 | 20078 (1)| 00:00:01 |
| 6 | VIEW | | 20050 | 234K| 17 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | SYS_TEMP_0FD9D676F_D1488ECE | 20050 | 234K| 17 (0)| 00:00:01 |
|* 8 | TABLE ACCESS BY USER ROWID | T | 1 | 53 | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("TS">TO_DATE(' 2020-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
8 - filter("T"."M" /*+ LOB_BY_VALUE */ LIKE '%Hello%')
but before you head down that route, I'd recommend digging into some explain plans and perhaps 10053 to see why the normal SQL is not working as you expect.