在MySQL中插入/更新随机日期

在MySQL中插入/更新随机日期,mysql,sql,date,random,Mysql,Sql,Date,Random,如何使用MySQL更新过去两周内随机日期的列 例如(代码实际上不起作用): 您的主要问题是RAND()不允许您指定的值范围。它将始终返回一个介于0和1之间的值 我现在无法计算出1..14随机解决方案,但为了让您开始,这将在过去10天内选择一个随机日期: SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY)) 这将col设置为介于(包括)当前日期和当前日期之间的日期-13天。乘以15得到当前日期-14天。您可以使用以下表达

如何使用MySQL更新过去两周内随机日期的列

例如(代码实际上不起作用):


您的主要问题是
RAND()
不允许您指定的值范围。它将始终返回一个介于0和1之间的值

我现在无法计算出1..14随机解决方案,但为了让您开始,这将在过去10天内选择一个随机日期:

SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY)) 

这将
col
设置为介于(包括)当前日期和当前日期之间的日期-13天。乘以15得到当前日期-14天。

您可以使用以下表达式得到一个随机整数:

要在
范围i一个简单的选项是使用此查询:

UPDATE mytable
SET col = (
    NOW() - INTERVAL FLOOR(RAND() * 14) DAY 
    + INTERVAL FLOOR(RAND() * 23) HOUR
    + INTERVAL FLOOR(RAND() * 59) MINUTE
    + INTERVAL FLOOR(RAND() * 59) SECOND
);
或者,更优雅一些:

UPDATE mytable
SET col = (NOW() - INTERVAL FLOOR(RAND() * 14 * 24 * 60 * 60) SECOND);

这是一个非常古老的答案和一个非常古老的问题,但这解决了一个问题,我必须介绍300多个随机日期。谢谢大家!@IsmaelMiguel,这实际上是一种非常间接的方法。使用时间戳,它更简单,更不容易出错。@Pacerier-这两种方法在我看来都很好(而且非常相似)。你有什么潜在的错误吗?@Pacerier你的建议非常有力,但我想要的只是一个非常基本和快速的原型。日期的准确性不是要求。我只需要随机日期。@lvaroG.Vicario,当我们需要将“过去的2周”更改为“过去的2个月”等其他内容时。我的解决方案更简单,可扩展到所有用例,因为它只指定开始日期和结束日期。
RAND(seed)
,seed是可选的。如果指定了seed,它将返回一个可重复的随机数序列。如果未指定种子,则返回一个完全随机数。因此,RAND(1)将始终返回相同的值(至少对于MYSQL)
SELECT FLOOR(7 + (RAND() * 5));
-- Date only
SELECT CURRENT_DATE - INTERVAL FLOOR(RAND() * 14) DAY;
-- Date and time
SELECT CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14 * 24 * 60 *60) SECOND;
UPDATE mytable
SET col = (
    NOW() - INTERVAL FLOOR(RAND() * 14) DAY 
    + INTERVAL FLOOR(RAND() * 23) HOUR
    + INTERVAL FLOOR(RAND() * 59) MINUTE
    + INTERVAL FLOOR(RAND() * 59) SECOND
);
UPDATE mytable
SET col = (NOW() - INTERVAL FLOOR(RAND() * 14 * 24 * 60 * 60) SECOND);