【问题标题】:Get items from next week从下周获得物品
【发布时间】:2020-08-28 22:32:39
【问题描述】:

我开始做如下查询:

SELECT * 
FROM mytable
WHERE (weekofyear(now())+1) <= date_inserted < weekofyear(now()+2)

这样做的问题是,前几年的项目也会出现在这里。执行此查询的最佳方法是什么 - 我希望我仍然可以在 date_inserted 字段的查询中使用索引,这就是我在这里问这个的原因

【问题讨论】:

    标签: mysql sql date query-optimization where-clause


    【解决方案1】:

    我会这样说:

    where
            date_inserted >=  current_date + interval 7 - weekday(current_date) day
        and date_inserted <  current_date + interval 14 - weekday(current_date) day
    

    表达式current_date + interval 7 - weekday(current_date) day 为您提供下周的第一天。这在假设您的周从星期一开始的假设下有效。

    您可以看到 date_inserted 列上没有应用日期函数,这意味着 MySQL 很乐意使用该列上的索引进行过滤(如果有的话)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      相关资源
      最近更新 更多