基于日期范围更改MySQL表中的值

时间:2012-10-09 02:31:09

标签: mysql database datetime

我正在尝试将帖子的状态从“继承”更改为“已发布”,但仅适用于日期介于08/01/2012&之间的帖子。 2012年10月8日。这是实现此目的的正确查询吗?

UPDATE wp_posts set post_status = replace(post_content, 'inherit', 'published') WHERE post_date BETWEEN '2012/08/01 00:00:00.000' AND '2012/10/08 23:59:00.000'

1 个答案:

答案 0 :(得分:1)

如果post_status是单个值,则无需对其REPLACE()执行操作。只需将其设置为新值即可。 MySQL日期的格式应为YYYY-MM-DD HH:ii:ss

中的2012-08-01 00:00:00
UPDATE
  wp_posts
/* Set to the new status */
SET post_status = 'published'
WHERE
  /* Include the old status in the WHERE clause */
  post_status = 'inherit'
  AND post_date BETWEEN '2012-08-01 00:00:00' AND '2012-10-08 23:59:00'

REPLACE()方法尽管可行,但可能会导致查询速度慢得多,因为替换操作将在每个行中进行,但实际上只会对行产生影响其中包括字符串inherit