如何在MySQL中生成随机的Unix时间戳

4

我正在尝试生成随机的Unix时间戳,只找到了这个例子:

SELECT from_unixtime(
       unix_timestamp('2008-01-01 01:00:00')+floor(rand()*31536000)
);
这段代码可以生成一个随机时间,但它会将时间重新转换成这种格式“2008-06-16 14:14:38”,而我想要的不是这种格式。我希望结果是Unix时间戳,例如UTC-5时区下的“1357597694”。 我只想告诉它生成多少个Unix时间戳,并且结果应该是Unix时间戳形式。就这样。我不明白为什么还没有关于这个问题的帖子。 编辑: 好吧,假设我需要在1354439504和1357599297之间选择一个随机日期,在MySQL脚本中该怎么做?

2
那么,移除 FROM_UNIXTIME() 将时间戳转换为字符串的函数? - Pekka
你可能想要收藏文档,因为它会解释你的结果;-) - Leigh
2个回答

7

1是UNIX时间戳,2也是,123456789也是。 UNIX时间戳只是一个整数;可以使用生成随机整数的规则来生成。在MySQL中,您可以简单地编写以下代码以生成范围在[0,9]之间的随机整数:

SELECT FLOOR(RAND() * 10)

可以按以下方式修改上面的代码以生成指定范围内的随机数[min, max]

SELECT 1354439504 + FLOOR(RAND() * (1357599297 - 1354439504 + 1))

要使用查询生成1000个随机时间戳,请使用任何具有多行的表:

SELECT 1354439504 + FLOOR(RAND() * (1357599297 - 1354439504 + 1))
FROM table_with_1000plus_rows
LIMIT 1000

好的,假设我需要在1354439504和1357599297之间随机选择一个日期,我该怎么做呢?使用MySQL脚本。 - Josh Wilberts

5

如果你需要Unix时间戳,那么只需跳过from_unixtime

select unix_timestamp('2008-01-01 01:00:00')+floor(rand()*31536000)

哦,Eric,谢谢你。我想给你发送一笔MoneyGram付款以感谢你的帮助,这真是令人沮丧...现在还有一件事,我该如何让它每次制作50或10个呢? - Josh Wilberts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,