【问题标题】:Wordpress: Increment time value by second(s) with MySQL query (duplicate post date + timestamp)Wordpress:使用 MySQL 查询以秒为单位增加时间值(重复发布日期 + 时间戳)
【发布时间】:2021-09-25 09:30:55
【问题描述】:

我需要你的帮助。 我正在尝试将 MySQL 数据库中所有帖子的发布时间增加 1 秒(或几秒),以获得每个帖子的唯一时间戳。

我有以下疑问:

set  @rownum =0;
UPDATE wp_posts SET post_date=DATE_ADD(post_date, INTERVAL+(@rownum := @rownum +1) SECOND);

它几乎可以工作,但时间将增加 5 天。我不明白为什么会这样。

如果有任何提示,我将不胜感激。

【问题讨论】:

  • 如果@rownum 的值介于 432000 和 518400 之间,则添加 5 天是有意义的。如果要添加 1 秒,为什么要添加 INTERVAL+(@rownum := @rownum +1) 秒? UPDATE 之后SELECT @rownum 的输出是什么?
  • 或者,wp_posts 中有多少行?
  • 感谢您的回答。 wp_posts 中有 401598 行。不幸的是,我不是 MySQL 专家。有一个简单的查询吗? :)
  • 我还评论说:“你为什么要添加INTERVAL+(@rownum := @rownum +1) seconds?”您是否尝试将 INTERVAL+(@rownum := @rownum +1) seconds 替换为 INTERVAL 1 SECOND ,只增加 1 秒?
  • 使用UPDATE wp_posts SET post_date=DATE_ADD(post_date, INTERVAL 1 SECOND);,所有行都将增加 1 秒。但是如何以这种方式增加它:2021-09-25 07:00:06 2021-09-25 07:00:07 2021-09-25 07:00:08

标签: mysql wordpress


【解决方案1】:

这应该列出所有post_date,并带有一个额外的列,其中包含您可以在增量中使用的值:

SELECT 
   ID,
   post_date,
   ROW_NUMBER() OVER (partition by post_date)-1 as incrementValue
FROM wp_posts 

如果增量值正常(即不超过 60),您可以更新您的 wp_posts 为:

UPDATE wp_posts w
JOIN (
   SELECT
      ID, 
      post_date,
      ROW_NUMBER() OVER (partition by post_date)-1 as incrementValue
   FROM wp_posts ) x ON x.ID = w.ID
SET w.post_date = DATE_ADD(w.post_date, INTERVAL x.incrementValue SECOND)

注意:以上内容未经测试,因此您应确保有备份,并知道如何在出现故障时恢复。

可能需要在下次更新时将秒数重置为 0:

UPDATE wp_posts
SET post_date = DATA_ADD(post_date, INTERVAL -second(post_date) SECOND)

【讨论】:

  • 感谢您的努力,但查询中有一些我无法修复的语法错误。也许更容易将小时、分钟和秒更改为每个帖子/行的随机值(不更改日期/不应更改日期)。因此,帖子获得相同时间戳的概率会非常低。
  • 哎呀,我的错,我现在看到我输入了partion,应该是partition
  • 另外一个错误也修复了(关于:"Column 'post_date' in field list is ambiguous")
  • 完美!你是男人!我很高兴,像一个魅力一样工作。非常非常感谢你!它也肯定会帮助其他人(网络上的唯一答案)。重复的日期 + 时间戳 = 下一个/上一个帖子的问题 支持并记录,只要我有 15 个声望。周末愉快。 ;-)
猜你喜欢
  • 2015-06-17
  • 1970-01-01
  • 2016-07-07
  • 2016-09-06
  • 2017-01-10
  • 2017-05-28
  • 2020-06-24
  • 2020-06-04
  • 1970-01-01
相关资源
最近更新 更多