0

我正在尝试更新我的 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

如果您需要任何澄清,请让我知道并提前感谢。

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

4

2 回答 2

0

您的 mod 正在选择受损号码而不是配对号码(每秒)

尝试这个

      where `ID` mod 2 = 0
于 2013-08-18T08:28:07.483 回答
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)
于 2013-08-18T09:12:10.207 回答