Contamos con la contestación a esta dificultad, o por lo menos eso esperamos. Si continuas con inquietudes coméntalo, que con gusto te responderemos
Solución:
Puede obtener un número entero aleatorio con esta expresión:
Para obtener un entero aleatorio R en el rango i <= R
FLOOR(i + RAND() * (j - i))
. Por ejemplo, para obtener un número entero aleatorio en el rango 7 <= R <12, puede usar la siguiente declaración:SELECT FLOOR(7 + (RAND() * 5));
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_rand
Úselo para generar un número aleatorio de días, horas o minutos (según la resolución) y agregue ese número a la fecha actual. La expresión completa sería algo como esto:
SELECT NOW() - INTERVAL FLOOR(RAND() * 14) DAY;
UPDATE mytable
SET col = CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14) DAY
Esto establece col
a una fecha entre (e incluyendo) la fecha actual y la fecha actual: 13 días. Multiplique por 15 para obtener la fecha actual: 14 días.
Tu principal problema es que RAND()
no permite un rango de valores como el que especifica. Siempre devolverá un valor entre 0 y 1.
No puedo encontrar una solución aleatoria 1..14 en este momento, pero para comenzar, esto elegirá una fecha aleatoria dentro de los últimos 10 días:
SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY))
Comentarios y calificaciones
Tienes la opción de añadir valor a nuestro contenido tributando tu veteranía en las notas.