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;
這個的函數調用方法就不寫了,如果有興趣的話,你們可以自己嘗試一下。