select t.adate
from (select to_date('1999-01-01','yyyy-mm-dd')+level-1 adate,row_number() over(order by dbms_random.value) rn
from dual
where to_char(to_date('1999-01-01','yyyy-mm-dd')+level-1,'day')not in ('星期六','星期日')
connect by level <= to_date('2013-07-01','yyyy-mm-dd')-to_date('1999-01-01','yyyy-mm-dd')+1
) t
where t.rn=1;