create or replace procedure genDate(result out nvarchar2) IS
year number;
month number;
day number;
Begin
year:=FLOOR(DBMS_RANDOM.value(2000,2100));
month:=FLOOR(DBMS_RANDOM.value(1,12));
IF month=2 and (year/4)=0 and (year/100)!=0 then
day:=FLOOR(DBMS_RANDOM.value(1,29));
ELSIF month=2 or (year/100)=0 then
day:=FLOOR(DBMS_RANDOM.value(1,28));
ELSIF MOD(month,2)=1 then
day:=FLOOR(DBMS_RANDOM.value(1,31));
ELSIF MOD(month,2)=0 and month!=2 then
day:=FLOOR(DBMS_RANDOM.value(1,30));
END IF;
result:=month||'-'||day||'-'||year;
End;
FUNCTION randomDateInRange(alpha IN DATE, omega IN DATE) RETURN DATE IS
BEGIN
RETURN alpha + DBMS_RANDOM.VALUE(0, omega - alpha);
END;
...然后,要使用此功能...
-- an employee can be any age from 16 to 65 years of age
DoB := randomDateInRange(
SYSDATE - INTERVAL '65' YEAR,
SYSDATE - INTERVAL '16' YEAR
);
-- an employee could have been hired any date since their sixteenth birthday
DoH := randomDateInRange(
DoB + INTERVAL '16' YEAR,
SYSDATE
);
5条答案
按热度按时间lndjwyie1#
您可以在两个日期之间生成随机日期,如下面的查询所示。随机日期在2000年1月1日和99年12月31日之间生成
或者您可以使用
在上面的示例中,第一个值为01-Jan-2000,第二个值ID为31-Dec-9999
nqwrtyyt2#
要生成随机日期,您可以使用
或随机约会时间
f4t66c6m3#
如果你想知道它的逻辑,你也可以使用这段代码。
x33g5p2x4#
这里有另一个选项来生成从现在开始返回的日期,其中365天的数量从今天返回,‘DD.MM.YYYY’-MASK
to_char(sysdate-dbms_random.value()*365, 'DD.MM.YYYY')
o4hqfura5#
我需要生成用于测试的员工数据。每个员工都需要一个出生日期,使他们的年龄在16岁到65岁之间,以及一个在他们16岁生日和SYSDATE之间的某个时间。这就是如何..。
...然后,要使用此功能...