[Oracle开发]生成随机日期

 

    公司的开发测试环境,有时候需要造假数据来测试应用程序的功能和性能。每次都手动输入一堆sql语句真心麻烦,正好最近正在学习oracle的存储过程,效率提高了不少。
    具体的存储过程就不贴出来了,这里只贴出生成随机日期的一部分内容:
 
--创建存储过程

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
 

你可能感兴趣的:(存储过程,开发,sql语句,随机日期)