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;
 

这个的函数调用方法就不写了,如果有兴趣的话,你们可以自己尝试一下。

 

你可能感兴趣的:(oracle)