Вставить / обновить случайную дату в MySQL - PullRequest
47 голосов
/ 28 декабря 2010

Как мне обновить столбец со случайной датой за последние 2 недели, используя MySQL?

Например (код на самом деле не работает):

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

Ответы [ 3 ]

74 голосов
/ 28 декабря 2010

Вы можете получить случайное целое число с этим выражением:

Для получения случайного целого числа R в диапазон я <= R <J, используйте выражение <strong>FLOOR(i + RAND() * (j - i)). За Например, чтобы получить случайное целое число в диапазон диапазон 7 <= R <12, вы может использовать следующее утверждение: </p>

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

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

Используйте это для генерации случайного числа дней, часов или минут (в зависимости от разрешения) и добавления этого числа к текущей дате. Полное выражение будет примерно таким:

SELECT NOW() - INTERVAL FLOOR(RAND() * 14) DAY;
15 голосов
/ 28 декабря 2010
UPDATE mytable
SET col = CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14) DAY

Устанавливает col дату между (и включая) текущей датой и текущей датой - 13 дней Умножьте на 15, чтобы получить текущую дату - 14 дней.

6 голосов
/ 28 декабря 2010

Ваша основная проблема заключается в том, что RAND() не допускает диапазон значений, как вы указали. Он всегда будет возвращать значение от 0 до 1.

Я не могу сейчас найти случайное решение 1..14, но для начала выберу случайную дату в течение последних 10 дней:

SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...