每隔一行更新时间值

时间:2013-08-18 08:20:56

标签: mysql sql dateadd

我正在尝试更新MySQL表中的时间值,并且无法解决逻辑问题。

我想这样写:

ID  Time
1   17:00
2   17:00
3   17:08
4   17:08
5   17:16
6   17:16

等等。

我可以通过在ID号上使用MOD来选择每隔一行,但是我无法为该行指定正确的更新值。

UPDATE `table`
set `Time` = DATE_ADD(Convert('17:00:00',TIME),INTERVAL (`ID`-2)*8 MINUTE)
where `ID` mod 2 = 1

如果您需要任何说明,请提前告知我们并提前致谢。

更新:我应该补充说,如果我有一个可以像上表一样更新的查询,那就更好了!

2 个答案:

答案 0 :(得分:0)

你的mod选择的是损伤数而不是对数(每秒)

试试这个

      where `ID` mod 2 = 0

答案 1 :(得分:0)

我认为这就是你想要的:

update tbl set `Time` =
           ADDDATE('1970-01-01 17:00:00', INTERVAL 8*((`ID`-1) DIV 2) MINUTE);

生成(对于已经有行ID1~6的表):

mysql> select * from tbl;
+------+----------+
| ID   | Time     |
+------+----------+
|    1 | 17:00:00 |
|    2 | 17:00:00 |
|    3 | 17:08:00 |
|    4 | 17:08:00 |
|    5 | 17:16:00 |
|    6 | 17:16:00 |
+------+----------+
6 rows in set (0.00 sec)