MySQL kullanarak son 2 hafta içinde bir sütunu rastgele bir tarihle nasıl güncelleştiririm? ÖrneğinMySQL'te rasgele tarih ekle/Güncelle
(kod aslında çalışmıyor):
UPDATE mytable
SET col = sysdate() - rand(1, 14);
MySQL kullanarak son 2 hafta içinde bir sütunu rastgele bir tarihle nasıl güncelleştiririm? ÖrneğinMySQL'te rasgele tarih ekle/Güncelle
(kod aslında çalışmıyor):
UPDATE mytable
SET col = sysdate() - rand(1, 14);
Bu ifade ile rasgele bir tamsayı almak:
ifade
FLOOR(i + RAND() * (j - i))
kullanmak, I < = R < j aralığında rasgele bir tam sayı R elde etmek.SELECT FLOOR(7 + (RAND() * 5));
http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html
kullanımı rasgele oluşturmak için: Örneğin aralığı içinde aralığı 7 < = R < 12 rasgele bir tamsayı edinmek için, aşağıdaki ifadeyi kullanabilirsiniz gün sayısına, saatlere veya dakikalara (çözünürlüğe bağlı olarak) ve bu sayıyı geçerli tarihe ekleyin. Tam ifadeniz şöyle bir şey olurdu:
SELECT NOW() - INTERVAL FLOOR(RAND() * 14) DAY;
asıl sorununuz belirttiğiniz gibi RAND()
bir değer aralığını izin vermez olmasıdır. Her zaman 0 ile 1 arasında bir değer döndürecektir.
Şu anda 1,.14 rastgele bir çözüm üretemiyorum, ancak başlamanıza yardımcı olmak için son 10 gün içinde rastgele bir tarih seçecektir:
13 gün -SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY))
UPDATE mytable
SET col = CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14) DAY
Bu (ve dahil) geçerli tarih ve geçerli tarih arasında bir tarihe col
ayarlar. Geçerli tarih elde etmek için 15 ile çarpın - 14 gün.
Bu gerçekten eski bir cevap ve gerçekten eski bir soru, ama bu aşkın 300 rasgele tarihleri tanıtmak zorunda sorunu çözdü. Teşekkür ederim! –
@IsmaelMiguel, Bu aslında bunu yapmanın çok dolaylı bir yoludur. Zaman damgası kullanın http://stackoverflow.com/a/28944156/632951, daha basit ve hatalara daha az eğilimli. – Pacerier
@Pacerier - Her iki yöntem bana iyi görünüyor (ve oldukça benzer). Aklında ne gibi hatalar var? –