写存储过程插入数据
时间有要求 取从1999-01-01到2013-07-01中获取随机一天;(周末和周日除外)
这个时间什么得到呢
------解决方案--------------------
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;
------解决方案--------------------
方法上可行,不过有点浪费cpu和内存了。
可以折衷下,例如
DECLARE
VN_A NUMBER;
vn_random number;
vt_day date;
BEGIN
VN_A:="2013-07-01"-"1900-01-01" ; --写个意思.
vn_random:=dbms_random.value(1,vn_a);
vt_day:="1900-01-01"+vn_random;
--然后如果vt_day是周六或者周日那么就切换为下一个周一或者上个周五。
END;
这样应该能够满足需要。