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

如何高效实现当前年周的时间戳范围查询?

MySQL 当前周数据查询的高效写法
  • 常见但低效的写法
    搜索当前周数据查询时,最常见的写法是:

    WHERE WEEK(`timestamp_field`) = WEEK(CURDATE())
    

    但这种写法存在明显性能缺陷——它会对timestamp_field的每一行数据都执行WEEK()函数,导致无法利用该字段上的索引,查询效率大打折扣。

  • 高效的范围查询方案
    想要优化查询效率,核心思路是通过时间区间匹配来筛选数据,这样就能利用timestamp_field上的索引。关键在于准确计算当前周的时间范围。

  • 已验证可行的高效SQL
    以下是经过验证的可行写法,通过计算本周起始时间来构建范围条件:

    WHERE `timestamp_field` > DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE()) DAY)
    AND `timestamp_field` < CURDATE()
    

    注:WEEKDAY(CURDATE())返回当前日期对应的周内索引(周一为0,周日为6),用当前日期减去该索引对应的天数,即可得到本周一的零点时刻;结合当前日期作为结束边界,就能精准筛选出本周截至当前的所有数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:32:40