2013-11-25 81 views
0

在mysql db中的表X中,我希望在每個行的1/01/1990之前的每個行中插入隨機週年日期,並在新的空列中顯示。請幫我出如伊馬新手在MySQLMySQL:根據其他日期屬性插入隨機日期值

+0

單程 - 您可以使用任何語言腳本和其他方式插入 - 使用商店程序員! – Suleman

+0

*隨機週年日期*表示什麼意思? – peterm

+0

我的意思是我只是用一些隨機日期來填充我的數據庫,它應該滿足上面提到的條件,比如他的週年日期應該在他的dob之後,並且應該從他的出生日期起至少有23年的差距。 – user3030707

回答

0

您可以使用RAND()來生成一個範圍內的隨機整數(讓我們在23和75之間的範圍說的)這樣

SELECT FLOOR(23 + RAND() * (75 - 23)) 

你的更新語句,以填補你的表anniversary列,然後可能看起來像

UPDATE person 
    SET anniversary = dob + INTERVAL FLOOR(23 + RAND() * (75 - 23)) YEAR 
WHERE dob < '1990-01-01' 

讓我們做一個快速的測試

 
mysql> CREATE TABLE person 
    -> (
    -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> name varchar(32) , 
    -> dob DATE , 
    -> anniversary DATE 
    ->); 
Query OK, 0 rows affected (0.02 sec) 

mysql> INSERT INTO person (name, dob) 
    -> VALUES 
    -> ('John', '1972-01-15'), 
    -> ('Phil', '1964-05-23'), 
    -> ('Mark', '1948-12-10'), 
    -> ('Steven', '1991-02-28'), 
    -> ('Helen', '1987-07-01'); 
Query OK, 5 rows affected (0.00 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> UPDATE person 
    -> SET anniversary = dob + INTERVAL FLOOR(23 + RAND() * (75 - 23)) YEAR 
    -> WHERE dob SELECT * FROM person; 
+----+--------+------------+-------------+ 
| id | name | dob  | anniversary | 
+----+--------+------------+-------------+ 
| 1 | John | 1972-01-15 | 1999-01-15 | 
| 2 | Phil | 1964-05-23 | 2022-05-23 | 
| 3 | Mark | 1948-12-10 | 1979-12-10 | 
| 4 | Steven | 1991-02-28 | NULL  | 
| 5 | Helen | 1987-07-01 | 2050-07-01 | 
+----+--------+------------+-------------+ 
5 rows in set (0.00 sec) 
+0

在上述案件中,週年日期超出了當前日期,如果還涉及該案件,情況會更好。無論如何感謝您的幫助。 – user3030707