def weighted_choice(choices):
total = sum(w for c, w in choices)
r = random.uniform(0, total)
upto = 0
for c, w in choices:
if upto + w >= r:
return c
upto += w
assert False, "Shouldn't get here"
Определите переменную как количество часов, затем вы можете:
declare
l_number_of_hours integer;
...
begin
...
l_number_of_hours := 6;
SELECT SYSTIMESTAMP + interval '1' HOUR * l_number_of_hours
INTO est_close_date
FROM DUAL;
end;
Если вам нужна более тонкая детализация, используйте минуты:
declare
l_number_of_minutes integer;
...
begin
...
l_number_of_minutes := 2 * 60 + 30;
SELECT SYSTIMESTAMP + interval '1' minute * l_number_of_minutes
INTO est_close_date
FROM DUAL;
end;