天天看點

Oracle 生成指定範圍内随機日期

Oracle生成一個指定範圍内的随機日期

步驟:

1. 先找到‘指定日期’與‘關鍵日期’相對應的整數偏移量,格式為'J':

SQL>select to_char(sysdate,'J') from dual; --系統給的結果是: 2456191

2. 生成指定範圍[min_value, max_value]内的随機日期:

SQL>select to_date(2456191 + trunc(DBMS_RANDOM.VALUE(min_value, max_value)),'J') from dual;

例如,要生成一個2003年内的任意日期:

1. 首先确定2003年1月1日的日期整數:

SQL>select to_char(to_date('2003-01-01', 'yyyy-MM-dd'), 'J') from dual; --系統給的結果是: 2452641

2. 生成指定範圍[min_value, max_value]内的随機日期:

SQL>select to_date(2452641 + trunc(DBMS_RANDOM.VALUE(0, 365)), 'J') from dual;

--dbms_random.seed

設定 seed 來确定随機數的起始點,對于相同的 seed 而言,随機數的任意一次變化都将是确定的.

設定種子的目的是重制随機數,用于調試.

就是說,若某一時刻調用 seed 之後,依次産生的随機數是4,6,1,...

那麼當再次調用相同的 seed 之後,依次産生的随機數仍是4,6,1,...

seed 參數有兩種,一種是數值型,一種是字元型(最大長度2000)

PROCEDURE seed(val IN BINARY_INTEGER );

PROCEDURE seed(val IN VARCHAR2 );