【问题标题】:Randomize Time Portion of Date Field随机化日期字段的时间部分
【发布时间】:2009-08-27 16:42:30
【问题描述】:

使用 Oracle 10g 随机化 DATE 列的时间部分的最佳方法是什么?

例如,数据的日期部分设置如下:

UPDATE table_name SET column_ts = SYSDATE - 120 + MOD(ROWNUM, 35)

我希望每一行的时间部分具有不同的值。

【问题讨论】:

标签: sql oracle random


【解决方案1】:

在 0 到 86400(一天中的秒数)之间选择一个随机数

将随机 / 86400 添加到您的日期。

SELECT TRUNC(SYSDATE)+DBMS_RANDOM.value(0, 86400-1)/86400 FROM DUAL

补充:

UPDATE table_name
SET    column_ts = SYSDATE - 120 + MOD(ROWNUM, 35) + DBMS_RANDOM.value(0, 86400-1)/86400;

【讨论】:

  • UPDATE table_name SET column_ts = SYSDATE - 120 + MOD(ROWNUM, 35) + DBMS_RANDOM.value(0, 86400-1)/86400;
【解决方案2】:
select trunc(sysdate)+dbms_random.value from dual;

【讨论】:

  • 如果 DBMS_RANDOM.VALUE 返回超过 86400,这可能会增加一天。这可能是不需要的。
  • DBMS_RANDOM.VALUE 被定义为返回一个介于 0 和 1 之间的数字
  • (如果你不传入任何参数)
猜你喜欢
  • 2013-12-12
  • 2018-11-03
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多