gpt4 book ai didi

php - 将一周添加到以 YYYYMMDD 格式存储的 SQL 值

转载 作者:行者123 更新时间:2023-11-30 21:53:44 24 4
gpt4 key购买 nike

我目前将 WordPress 高级自定义字段日期作为时间戳存储在我的数据库中,但由于新插件的要求,我现在必须将它们存储为 YYYYMMDD 格式。

我有一个 chronjob 设置为每晚运行,它为我网站上的每个每周事件增加一周 (604800),其中“event_date”小于当前的 UNIX_TIMESTAMP。这将重新发布下周的事件。

我假设我需要将 YYYYMMDD 格式转换为时间戳,添加 604800 然后将其转换回来但真的不确定如何去做(SQL 不是我的强项!)

我必须将 604800 添加到类别 ID 为 29(每周)的每个帖子的时间戳,并将 1209600 添加到类别 ID 为 19(每两周)的当前 SQL 如下...

下面的代码已经更新并且正在运行!

UPDATE wp_postmeta rh

INNER JOIN (
SELECT ID, wt.term_id
FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id
INNER JOIN wp_term_relationships wpr ON wpr.term_taxonomy_id = wtt.term_taxonomy_id
INNER JOIN wp_posts ON ID = wpr.object_id
WHERE taxonomy = 'category'
AND (wt.term_id=32)
AND post_type = 'post'
) t ON rh.post_id = t.ID
SET rh.meta_value = CASE
WHEN t.term_id = 32
THEN DATE_FORMAT(STR_TO_DATE(rh.meta_value, '%Y%m%d') + INTERVAL 1 WEEK, '%Y%m%d')
ELSE rh.meta_value END

WHERE rh.meta_key = 'event_date' AND rh.meta_value < UNIX_TIMESTAMP();

有人能建议将一周(或两周)添加到现在以 YYYYMMDD 格式存储的这些事件的最佳方法吗?

这需要存储在 PHP 脚本中,这样我就可以设置一个 chronjob 来每晚自动执行和更新它。

提前致谢,马克。

最佳答案

如果您有类似 20170901 的内容,并且想为其添加一周,请在 SQL 中尝试此操作。

 DATE_FORMAT(STR_TO_DATE(date_text_col, '%Y%m%d') + INTERVAL 1 WEEK, '%Y%m%d')

这会将您的文本转换为 DATETIME。然后它将添加一周。然后它会将其转换回文本。

这应该适用于任何文本数据类型(CLOB、VARCHAR、CHAR)。

该日期计算的结果应直接放入列中,而不是添加到列中。像这样的表达式应该可以做到。

SET rh.meta_value = CASE 
WHEN t.term_id = 32
THEN DATE_FORMAT(STR_TO_DATE(rh.meta_value, '%Y%m%d') + INTERVAL 1 WEEK, '%Y%m%d')
ELSE rh.meta_value END

如果您执行 rh.meta_value = rh.meta_value + (some date),您会将日期添加到自身,就好像它是一个数字,这是没有意义的。

wp_postmeta 的布局结合 MySQL 自动将文本强制转换为数字会使这类事情变得非常困惑。

关于php - 将一周添加到以 YYYYMMDD 格式存储的 SQL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46095150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com