我尝试过这个查询,但它不起作用:
UPDATE phonebooks SET created_at = DATE_ADD(created_at, INTERVAL 10 second)
我目前的记录是这样的:
ID | DATE |
---|---|
1 | 2022-03-24 10:30:34 |
2 | 2022-03-24 10:30:34 |
3 | 2022-03-24 10:30:34 |
4 | 2022-03-24 10:30:34 |
5 | 2022-03-24 10:30:34 |
6 | 2022-03-24 10:30:34 |
7 | 2022-03-24 10:30:34 |
现在你只是在每一行增加 10 秒,但你需要一些东西来增加你的间隔,这取决于你要更新的行。根据您的示例,您可以使用 ID 作为乘数。
UPDATE phonebooks SET created_at = DATE_ADD(created_at, INTERVAL 10 * id second)
如果您的 ID 中有间隙,这将不完全按照指定工作。
表中未知位置的动态解决方案。 将使用用户定义的变量。
时间的起点由 UPDATE WHERE 子句确定
CREATE TABLE table1 ( `ID` INTEGER, `DATE` VARCHAR(19) ); INSERT INTO table1 (`ID`, `DATE`) VALUES ('1', '2022-03-24 10:30:34'), ('2', '2022-03-24 10:30:34'), ('3', '2022-03-24 10:30:34'), ('4', '2022-03-24 10:30:34'), ('5', '2022-03-24 10:30:34'), ('6', '2022-03-24 10:30:34'), ('7', '2022-03-24 10:30:34');
SET @date = ''
UPDATE table1 SET `DATE` = IF(@date = '', @date := DATE_ADD(`DATE`, INTERVAL 10 second), @date := DATE_ADD(@date, INTERVAL 10 second) ) WHERE `DATE` >= '2022-03-24 10:30:34'
SELECT * FROM table1
身份证 |日期 -: |:------------------ 1 |2022-03-24 10:30:44 2 |2022-03-24 10:30:54 3 |2022-03-24 10:31:04 4 |2022-03-24 10:31:14 5 |2022-03-24 10:31:24 6 |2022-03-24 10:31:34 7 |2022-03-24 10:31:44
db<>在这里摆弄