Oracle生成随机日期

2014-11-24 17:13:03 · 作者: · 浏览: 0

具体的存储过程就不贴出来了,这里只贴出生成随机日期的一部分内容:


--创建存储过程


create or replace procedure test_pro is


m_temp varchar(30);


m_temp1 varchar(30);


m_temp2 varchar(30);


m_birthdate TIMESTAMP;


m_id varchar2(30);


begin


--根据当前日期生成字符型数值


select to_char(sysdate,'J') into m_temp from dual;


dbms_output.put_line(m_temp);


--根据用户定义的随机数范围取整,trunc不同于round四舍五入,而是直接截去


select trunc(dbms_random.value(2456127, 2456127+364)) into m_temp1 from dual;


dbms_output.put_line(m_temp1);


--将上一步产生的随机数,转换成日期


select to_date(m_temp1,'J') into m_temp2 from dual;


dbms_output.put_line(m_temp2);


--组合使用各个函数,将随机数取整后转换成日期


select to_date(trunc(dbms_random.value(2452641, 2452641+364)),'J') into m_birthdate from dual;


dbms_output.put_line(m_birthdate);


--将上一步生成的日期,转换成字符型数值


select to_char(m_birthdate,'YYYYMMDD') into m_id from dual;


dbms_output.put_line(m_id);


end;


--sqlplus中执行结果如下


SQL> exec test_pro;


2456127


2456224


23-10月-12


12-12月-03 12.00.00.000000 上午


20031212


PL/SQL procedure successfully completed


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------