1

投稿のステータスを「継承」から「公開済み」に変更しようとしていますが、日付が2012年8月1日から2012年8月10日までの投稿のみです。これは、これを達成するために実行する適切なクエリでしょうか?

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'
4

1 に答える 1

1

が単一の値である場合、それpost_statusに対してを行う必要はありませんREPLACE()。新しい値に設定するだけです。YYYY-MM-DD HH:ii:ssまた、MySQLの日付は次のようにフォーマットする必要があります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

于 2012-10-09T02:35:30.473 に答える