2015-02-19 3 views
1

У меня есть штамп времени, который представляет собой текущую временную метку:PLSQL: случайная метка времени между 2 метки времени

now := CURRENT_TIMESTAMP; 
tomorrow := now + INTERVAL '1' DAY; 

Теперь я хочу, чтобы сделать случайную метку времени между этими 2 значениями, я пытался с DBMS_RANDOM, но это не делает работа

Любая помощь?

ответ

1

Это будет генерировать случайные метку времени между текущим и временной меткой SYSDATE + 1:

SELECT TO_DATE(SYSDATE, 'MM/DD/YYYY HH24:MI:SS') + 
     dbms_random.value(0, TO_DATE(SYSDATE, 'MM/DD/YYYY HH24:MI:SS') - 
     TO_DATE(SYSDATE, 'MM/DD/YYYY HH24:MI:SS')+1) 
FROM dual; 

As PL/SQL:

DECLARE 
    l_ran_time TIMESTAMP; 
BEGIN 
    SELECT SYSDATE + 
     dbms_random.value(0, SYSDATE - 
     SYSDATE+1) 
    INTO l_ran_time 
    FROM dual; 
    dbms_output.put_line(l_ran_time); 
END; 
/
+0

делает эту работу в функции? – Lumpi

+0

Я не понимаю, почему нет. Я обновил ответ анонимным блоком. – mmmmmpie

+0

Этот код работает, я собираюсь дать ему попробовать в моей программе – Lumpi