【问题标题】:Enter time in a column from a specific range by shuffling from time range通过从时间范围改组在特定范围内的列中输入时间
【发布时间】:2021-02-15 06:38:42
【问题描述】:

嗨,亲爱的,我想把时间放在表 T1 中,其中有列 C1,C2,C3 我想把日期放在 C1 中,日期必须从给定日期 date1date2 和 c2 之间输入,用于旁白,C3 必须通过从给定范围在 C3 中随机播放来放置时间意味着想要从开始添加时间 7:45 结束时间 8:00 并想要一个月 Jan-2021 系统可以在 C1 中添加 date 一个月并添加给定的旁白c2 除了星期天,并通过在 oracle 表单中改组来增加给定范围内的时间,请有任何想法

【问题讨论】:

  • 标点存在是有原因的;用它。我多次阅读您的问题,但我不知道您在说什么。它必须与 Oracle 表单、日期和时间有关,但我迷失在“C”列和“旁白”中。希望其他人会提供帮助。
  • 我想要时间在列中插入时间,例如 7:45 到 8:00 我可以使用级别,但它会同时发送我需要它像第一次发送 7:45 一样随机发送比 7:47 比 7:49 然后 7:46

标签: sql oracle oracleforms


【解决方案1】:

如果要创建随机时间,请使用DBMS_RANDOM 包。例如:

更改会话以便您知道 result 值代表什么:

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi';

Session altered.

查询:

SQL> with test (start_date) as
  2    (select to_date('01.01.2021 07:45', 'dd.mm.yyyy hh24:mi') from dual
  3    )
  4  select start_date + round(dbms_random.value(1, 15)) / (24 * 60) result
  5  from test
  6  connect by level <= 15;

RESULT
----------------
01.01.2021 07:49
01.01.2021 07:54
01.01.2021 07:59
01.01.2021 07:58
01.01.2021 07:56
01.01.2021 07:54
01.01.2021 07:57
01.01.2021 07:52
01.01.2021 07:54
01.01.2021 07:52
01.01.2021 07:50
01.01.2021 07:46
01.01.2021 07:53
01.01.2021 07:48
01.01.2021 07:49

15 rows selected.

SQL>

这是方法

由于我仍然不明白你实际上在做什么,我希望这足以让你继续前进。

【讨论】:

  • 当然我希望你是准确的,但我得到这个错误 SQL*Plus 内部错误状态 2091,上下文 0:0:0 不安全继续
  • 看起来您使用的是旧的 Oracle 客户端;如果可能的话,也许你应该升级。您拥有哪个数据库版本,以及您使用哪个客户端版本连接到该数据库?
  • Oracle 数据库 11g 企业版版本 11.2.0.4.0 - 64 位生产 PL/SQL 版本 11.2.0.4.0 - 生产 CORE 11.2.0.4.0 适用于 Linux 的生产 TNS:版本 11.2.0.4.0 - 生产 NLSRTL 版本 11.2.0.4.0 - 生产
  • 对;相当一个的。我的意思是,11g 是旧的,但 8i 是古老的。你真的应该升级。因为,正如您在我的回答中看到的,这段代码工作正常。我用的是 11g。
  • 您可能应该循环遍历块中的所有记录。到达最后一条记录时退出循环;请参阅表单在线帮助并搜索 :system 变量(它是 :system.last_record,您可能会觉得有用)。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
相关资源
最近更新 更多