【问题标题】:How do I add random times to to_date datatype?如何将随机时间添加到 to_date 数据类型?
【发布时间】:2021-06-01 07:39:28
【问题描述】:

以下语句将被执行。

select current_timestamp + dbms_random.value(40, 59) minute from dual;

我想要的语句不起作用。

to_date('2021-01-05:08:50:00', 'yyyy-mm-dd:hh24:mi:ss') + dbms_random.value(40, 59) minute;

我收到错误 <analytic clause>, '@', KEEP or WITHIN expected, got 'minute'

我想知道如何解决这个问题。

【问题讨论】:

  • 这看起来不像是 Oracle 错误;如果它实际上来自 Oracle,那么 ORA 错误号和完整消息是什么?如果不是,哪个客户端或应用程序正在生成它? (您确定它来自那个表达式;并且您使用的是 Oracle 数据库 - 以及哪个版本?)

标签: sql oracle


【解决方案1】:

在您的上下文中minute 是什么?

如果是别名,一切正常:

SQL> select to_date('2021-01-05:08:50:00', 'yyyy-mm-dd:hh24:mi:ss') +
  2    dbms_random.value(40, 59) minute
  3  from dual;

MINUTE
-------------------
20.02.2021 02:09:25

SQL>

如果是表达式,则去掉“分钟”并使用

to_date('2021-01-05:08:50:00', 'yyyy-mm-dd:hh24:mi:ss') + dbms_random.value(40, 59);

只有。

附:正如 Wernfried 评论的那样,缺少“分钟”部分,所以要么使用他的建议(带间隔),要么这样:

dbms_random.value(40, 59) * 1 / (24*60)
                          -------------

【讨论】:

  • 这将添加一个随机天数而不是分钟数。应该是+ dbms_random.value(40, 59) / 24+ dbms_random.value(40, 59) * INTERVAL '1' MINUTE
  • 是的!谢谢你,@Wernfried!
猜你喜欢
  • 1970-01-01
  • 2023-02-22
  • 2014-01-19
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多