在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))