You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何正确查询当前时间过去一小时内的wp_posts记录?

WordPress 过去一小时文章查询问题解决

修正后的查询语句

最稳妥且通用的写法是用DATE_SUB替代SUBTIME,同时可省略多余的<= CURRENT_TIMESTAMP()条件(未来时间的文章不存在):

SELECT * FROM `wp_posts`
WHERE post_date >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);

原查询无结果的可能原因及解决

  1. 时区不匹配
    WordPress默认将post_date以UTC时间存储,而CURRENT_TIMESTAMP()使用数据库服务器的本地时区,导致时间范围计算偏差。若为此问题,需统一时区后查询:
SELECT * FROM `wp_posts`
-- 将UTC格式的post_date转换为数据库会话时区
WHERE CONVERT_TZ(post_date, '+00:00', @@session.time_zone) >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
  1. SUBTIME兼容性问题
    部分数据库版本对SUBTIME处理时间戳的逻辑存在差异,换成DATE_SUB的INTERVAL语法更兼容所有MySQL/MariaDB版本。

验证方法

先执行以下语句确认时间范围是否正确,再对比wp_posts中的post_date值:

SELECT CURRENT_TIMESTAMP() AS 当前时间, DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) AS 一小时前时间;

内容的提问来源于stack exchange,提问作者MdFarzan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:17:05