mysql - 如何在两个时间范围之间获得随机时间(不是日期)

时间:2014-09-12 10:48:40

标签: mysql random time

我正在尝试研究如何在两个时间范围之间返回一个随机时间。 例如,获取15:00:00到22:00:00之间的随机时间

到目前为止,我有 - 但不知道如何限制它

select sec_to_time(floor(15 + (rand() * 86401)))

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:6)

SELECT SEC_TO_TIME(
          FLOOR(
             TIME_TO_SEC('15:00:00') + RAND() * (
                  TIME_TO_SEC(TIMEDIFF('22:00:00', '15:00:00'))
             )
          )
        );

以秒计算。然后添加一个在15:00:0022:00:0015:00:00之间的秒数范围内的随机数。然后将秒数转换回时间值。

  • 有关所用功能的更多信息,请参阅this link

答案 1 :(得分:1)

试试这种方式

select FROM_UNIXTIME(UNIX_TIMESTAMP('<starting_date_in_date_format>') + FLOOR(0 + (RAND() * UNIX_TIMESTAMP('<ending_date_in_date_format>'))) from dual;

答案 2 :(得分:1)

逻辑很简单,

  1. 获得2次之间的差异。
  2. 在这两次(数字)之间生成随机数
  3. 您可以在几分钟或几秒钟内直接生成时间。
  4. 以下是获取随机小时的示例,

    select Round((FLOOR(RAND() * (TIME_TO_SEC('15:00:00') - TIME_TO_SEC('22:00:00') + 1)) + TIME_TO_SEC('22:00:00')) / 3600,0)
    

    编辑:Fiddle

    有关参考,请参阅this link