ORACLE獲取指定日期的隨機時間函數

 

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;
 

這個的函數調用方法就不寫了,如果有興趣的話,你們可以自己嘗試一下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章