什么叫 “直接放在sql运行呢” ?
难道我上面贴的语句, 都不是 sql 语句?
上面第一行, 创建一个测试表
后面 插入5行测试数据。 时间为 2012-11-13 1点到5点。
然后就是一条更新用的 sql 语句。
就是在 mysql 命令行下面, 输入的语句啊。
没有用其它的语言来折腾啦。
至于你问的 “这样好像日期没有换了吗?”
我又去看了看你的那个题目, 发现还有个日期区间的限制条件。
我这里就 删除表, 重建表, 插入相同的测试数据以后, 执行下面的 SQL-- 20点至23点。
-- 区间=3小时=180分钟=10800秒
-- 下面更新时间 = '2012-05-01 20:00:00' 之后的 随机秒数。(区间在 1- 10800 之间)
-- 2012-5-1到2013-6-6的范围
-- 区间= 401 天
-- 下面更新日期 = '2012-05-01 随机时间' 之后的 随机天数。 (区间在 1-401 之间)
UPDATE test_random_time
SET
newstime =
DATE_ADD(
DATE_ADD('2012-05-01 20:00:00', INTERVAL FLOOR(1 + (RAND() * 10800)) SECOND ),
INTERVAL FLOOR(1 + (RAND() * 401)) DAY)
WHERE
DATE(newstime) = '2012-11-13';
mysql> SELECT * FROM test_random_time;
+------+---------------------+
| id | newstime |
+------+---------------------+
| 1 | 2012-09-04 20:53:06 |
| 2 | 2012-10-31 22:02:11 |
| 3 | 2013-04-05 20:43:37 |
| 4 | 2013-05-13 21:29:02 |
| 5 | 2012-08-14 20:38:56 |
+------+---------------------+
5 rows in set (0.00 sec)