我正在尝试研究如何在两个时间范围之间返回一个随机时间。 例如,获取15:00:00到22:00:00之间的随机时间
到目前为止,我有 - 但不知道如何限制它
select sec_to_time(floor(15 + (rand() * 86401)))
非常感谢任何帮助!
答案 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:00
和22:00:00
到15:00:00
之间的秒数范围内的随机数。然后将秒数转换回时间值。
答案 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)