Searching from array (complex criteria) without unnesting?
Even if the syntax were valid, your first query wouldn't do what you describe anyway, as you need to ensure it is same date from the array which is > one thing and &lt; another thing, not two different dates.  You need to use ranges, both to be syntactically valid, and to be semantically valid.

select * from somedates where 
    daterange((startdate+interval'0.6 years')::date,(startdate+interval'1.4 years')::date) @&gt; ANY (otherdates) and
    daterange((startdate+interval'3.5 years')::date,(startdate+interval'5.5 years')::date) @&gt; ANY (otherdates);


You can make it a bit less ugly like this:

create or replace function daterange2(date, interval, interval) returns daterange 
  as $$ select daterange(($1+$2)::date, ($1+$3)::date) $$
  language sql immutable parallel safe;

select * from somedates where                                                                                             
    daterange2(startdate,'0.6 years','1.4 years') @&gt; ANY (otherdates) and
    daterange2(startdate,'3.5 years','5.5 years') @&gt; ANY (otherdates);