我正试图使用以下查询将给定MySQL单元格范围内的时间从特定值增加到每次1秒:
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.
查询中的错误在哪里?
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根本没有被更新。