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;