我尝试使用以下查询每次从特定值+ 1秒增加给定范围的MySQL单元格中的时间:
set @mytime= -1;
update wp_posts set post_date = date('2015-04-03 03:00:07') + interval (@mytime := @mytime + 1) second WHERE `wp_posts`.`ID` > 229 AND `wp_posts`.`ID` < 999;
问题是它为单元格229设置了正确的时间,但是从单元格230开始它从00:00:00开始,然后按照预期为每个下一个单元格添加1个新秒钟。
所以而不是
2015-04-03 03:00:06
2015-04-03 03:00:07
2015-04-03 03:00:08
etc
我有
2015-04-03 03:00:06
2015-04-03 00:00:00
2015-04-03 00:00:01
2015-04-03 00:00:02
and so on.
查询中的错误在哪里?
答案 0 :(得分:2)
date('2015-04-03 03:00:07')
只返回日期部分,它会丢弃一天中的时间,因此当您向其添加秒数时,它被视为午夜。将其更改为:
update wp_posts set post_date = cast('2015-04-03 03:00:07' AS DATETIME) + interval (@mytime := @mytime + 1) second WHERE `wp_posts`.`ID` > 229 AND `wp_posts`.`ID` < 999;
单元格229不受此影响的原因是因为您的WHERE
条款显示ID > 229
,而不是ID >= 229
。因此,单元格229根本没有更新。