Как обновить столбец со случайной датой за последние 2 недели с помощью MySQL?
Например (код фактически не работает):
UPDATE mytable
SET col = sysdate() - rand(1, 14);
Ответ 1
Вы можете получить случайное целое с этим выражением:
Чтобы получить случайное целое число R в диапазон я <= R < j, используйте выражение FLOOR(i + RAND() * (j - i)). Для Например, чтобы получить случайное целое число в диапазон диапазона 7 <= R < 12, вы может использовать следующую инструкцию:
Используйте это для генерации случайного числа дней, часов или минут (в зависимости от разрешения) и добавьте это число в текущую дату. Полное выражение будет примерно таким:
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))