dbms_random.value 与下面的代码一起工作正常,除了需要通过分配的字段更改日期
Posted
技术标签:
【中文标题】dbms_random.value 与下面的代码一起工作正常,除了需要通过分配的字段更改日期【英文标题】:dbms_random.value works fine with code below except need to change date by assigned field 【发布时间】:2021-05-19 04:12:31 【问题描述】:亲爱的,我有这个工作正常的代码它生成随机时间,直到找到最后一条记录我有 2 个字段,其中:C 字段有不同的日期我可以生成随机时间但在同一日期如何分配:C 字段的日期,因为它从 :C 字段中获取日期并放入这个生成的时间
START_DATE DATE := TO_DATE('01.01.2021 07:45', 'dd.mm.yyyy hh24:mi');
Begin
FIRST_RECORD;
LOOP
:a := START_DATE + round(dbms_random.value (1, 15))/ (24 * 60);
IF :system.last_record = 'FALSE'
THEN
NEXT_RECORD;
ELSE
EXIT;
END IF;
END LOOP;
End;
--it gives me data like this
01.01.2021 07:59
01.01.2021 07:59
01.01.2021 07:57
01.01.2021 07:53
01.01.2021 07:47
01.01.2021 07:59
01.01.2021 07:54
01.01.2021 07:47
01.01.2021 07:57
01.01.2021 07:46
01.01.2021 07:47
我在表格上有 :c 日期字段,我希望它只是从 :c 中获取日期,并像这样从这段代码中花费时间
01.01.2021 07:59
02.01.2021 07:57
03.01.2021 07:53
04.01.2021 07:47
05.01.2021 07:59
【问题讨论】:
@littlefoot 请帮帮我 附注:用START_DATE TIMESTAMP := timestamp'2021-01-01 07:45:00';
替换当前的局部变量声明。
@BarbarosÖzhan 亲爱的它不工作我替换了START_DATE TIMESTAMP := timestamp('2021-01-01 07:45:00');
但不工作,我不想给出日期预先提到我希望它从:C 获取日期,时间必须在 07:45 之间随机到 08:00
我也试过不加括号,但没有成功,比我加括号
好吧,我的意思是this,但它可能不适用于可能有一些限制的表单。
【参考方案1】:
那么,您为什么不在同一过程中立即将该值放入C
字段中?
...
:a := START_DATE + round(dbms_random.value (1, 15))/ (24 * 60);
:c := trunc(:c) + round(dbms_random.value (1, 15))/ (24 * 60); --> this
...
【讨论】:
是的,它可以工作,但我怎么能把它分配给时间范围,就像我想从上午 07:45 到上午 08:00 随机但它从上午 12:00 开始 是否可以设置字段属性 HH:MM AM 并希望将初始值设置为 07:45 AM 我将字段设置为时间但从不考虑现在我正在尝试我只是花时间在字段中并使其随机播放并单独获取日期 我不想分开日期和时间值。在 Oracle 中,有 DATE 数据类型,它包含日期和时间;没有单独的“TIME”数据类型。如果您拆分它们,您可能会遇到困难,因为“时间”本身可能会将日期默认为“今天的日期”,这可能不是您想要的。因此,您必须在这些字段上包含一组控件,也许是记录,也许是块......取决于。基本上,拆分日期和时间对您来说意味着更多的工作。如果我是你,如果可能的话,我不会这样做。 我这样做了,但是我以尴尬的方式为 1 月生成从 1 到 31 的日期,然后一个具有固定日期的日期列生成具有时间格式的平均值 01-01-2021,然后应用 agt 所有数据报告中显示的仅显示时间和计算的时间,我需要两者都显示我需要:) :) 我知道这不是一种工作方式,但需要紧急然后这样做之后会找到任何解决方案干杯@littlefoot你对我不认识的人或组织很有帮助,但你对每一件事都非常感谢。以上是关于dbms_random.value 与下面的代码一起工作正常,除了需要通过分配的字段更改日期的主要内容,如果未能解决你的问题,请参考以下文章