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

标签 php mysql sql wordpress datetime

我目前将 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/

相关文章:

sql - 具有基于主键的日志的快速刷新物化 View

php - 如何确定请求来自 REST api

mysql - cloudControl mysqls.免费导入数据库

javascript - 客户端或服务器正在删除变音符号

mysql - 从数据库表中获取相似的行

php - 如何将具有where条件的多个表转储到单个文件中

sql - 从sqlite数据库中删除重复行

c# - 从 .NET SqlCommand 调用时 SQL Server 批量插入失败

php - 关注由 ajax 创建的文本框

php - 使用 GET 值插入 postgis 几何图形