【发布时间】:2017-09-07 11:24:55
【问题描述】:
我目前将 WordPress 高级自定义字段日期作为时间戳存储在我的数据库中,但由于新插件的要求,我现在必须将它们存储为 YYYYMMDD 格式。
我有一个 chronjob 设置为每晚运行,它为我网站上的每个每周事件增加一周 (604800),其中“event_date”小于当前的 UNIX_TIMESTAMP。这将重新发布下一周的活动。
我假设我需要将 YYYYMMDD 格式转换为时间戳,添加 604800 然后将其转换回来,但真的不知道如何去做(SQL 不是我的强项!)
当前的SQL我必须在每个类别ID为29(每周)的帖子的时间戳中添加604800,在类别ID为19(每两周)中添加1209600如下...
下面的代码已经更新并且正在运行!
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 以每晚自动执行和更新它。
提前致谢, 标记。
【问题讨论】:
-
event_date 数据类型是 varchar ?
-
event_date的meta_key的meta_value存储为longtext
-
是的,这是
wp_postmeta键/值存储的典型问题。这些值都是文本。
标签: php mysql sql wordpress datetime