使用DBMS_RANDOM在Oracle中生成随机日期

sha*_*ait 14 database oracle random plsql date

我有这个匿名块:

DECLARE
   V_DATA   DATE;
BEGIN
   V_DATA := '01-GEN-2000';

   HR.STATISTICHE.RATINGOPERATORI (V_DATA);
   COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

但我想以随机的方式生成日期.我能怎么做?

Gau*_*oni 27

您可以在两个日期之间生成随机日期,如下面的查询所示.随机日期在1-jan-2000和31-dec-9999之间生成

  SELECT TO_DATE(
              TRUNC(
                   DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J')
                                    ,TO_CHAR(DATE '9999-12-31','J')
                                    )
                    ),'J'
               ) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

SELECT TO_DATE (
              TRUNC (
                     DBMS_RANDOM.VALUE (2451545, 5373484) 
                    )
                , 'J'
              )
  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,第一个值是2000年1月1日,第二个值是31-dec-9999


小智 6

要生成随机日期,您可以使用

select to_date('2010-01-01', 'yyyy-mm-dd')+trunc(dbms_random.value(1,1000)) from dual
Run Code Online (Sandbox Code Playgroud)

或随机日期时间

select to_date('2010-01-01', 'yyyy-mm-dd')+dbms_random.value(1,1000) from dual
Run Code Online (Sandbox Code Playgroud)