在MySQL中插入/更新随机date

我如何使用MySQL在过去2周内随机更新一列?

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

UPDATE mytable SET col = sysdate() - rand(1, 14); 

你可以用这个expression式得到一个随机整数:

要获得范围为i <= R <j的随机整数R,请使用expression式FLOOR(i + RAND() * (j - i)) 。 例如,要获得7 <= R <12范围内的随机整数,可以使用以下语句:

 SELECT FLOOR(7 + (RAND() * 5)); 

http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html

使用它来生成一个随机的天数,小时或分钟数(取决于分辨率),并将该数字添加到当前date。 完整的expression会是这样的:

 SELECT NOW() - INTERVAL FLOOR(RAND() * 14) DAY; 
 UPDATE mytable SET col = CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14) DAY 

这将col设置为(包括)当前date和当前date之间的date – 13天。 乘以15得到当前date – 14天。

你的主要问题是, RAND()不允许你指定的一系列值。 它将始终返回0和1之间的值。

我现在无法制定一个1..14的随机解决scheme,但为了让你开始,这将在过去10天内select一个随机date:

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