2013-11-25 72 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