Подтвердить что ты не робот

Вставить/Обновить случайную дату в MySQL

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

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

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

Ответ 1

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

Чтобы получить случайное целое число R в диапазон я <= R < j, используйте выражение 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

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

SELECT NOW() - INTERVAL FLOOR(RAND() * 14) DAY;

Ответ 2

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

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

Ответ 3

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

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

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