CREATE OR REPLACE FUNCTION "DW_EVENTCENTER"."R_TIME"
(V_DATE IN VARCHAR2, V_BEGIN IN NUMBER := 0, V_END IN NUMBER := 1) RETURN DATE
IS
R_DATE DATE ;
BEGIN
SELECT TO_DATE(V_DATE,'YYYY-MM-DD') + DBMS_RANDOM.VALUE(V_BEGIN ,V_END) INTO R_DATE FROM DUAL;
RETURN R_DATE ;
END R_TIME;
调用时,可以通过select 查询 调用函数
SELECT R_TIME(20190101,0,1) FROM YXLS_LEFT_03
YXLS_LEFT_03 这张表中有多少条数据便会出现多少条随机时间
上面的V_DATE V_BEGIN V_END 就是调用函数时传入的三个参数 而后面的0和1就是传入的那一天的0点到24点
所以 你想取2019年1月1日的12点到24点 你就可以把 V_BEGIN设置为0.5
之后整个函数就可以返回你想要的某一天的随机时间 ,当然 你还想获取某段时间 也就是不只是一天的随机时间 你可以通过函数调用以下的SELECT语句 。
SELECT to_date(TRUNC(DBMS_RANDOM.VALUE(
to_number(to_char(to_date('20190101','yyyymmdd'),'J')),
to_number(to_char(to_date('20190501','yyyymmdd')+1,'J')))),'J')+
DBMS_RANDOM.VALUE(1,3600)/3600
prize_time
FROM dual;
这个的函数调用方法就不写了,如果有兴趣的话,你们可以自己尝试一下。