首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取当周记录,不包括当周的未来日期

取当周记录,不包括当周的未来日期
EN

Stack Overflow用户
提问于 2020-08-07 21:30:51
回答 2查看 56关注 0票数 0

这是我用来获取当前周订单的SQL:

代码语言:javascript
复制
SELECT * FROM orders 
WHERE YEARWEEK(order_date, 1) = YEARWEEK(CURDATE(), 1) 
ORDER BY order_date DESC;

但问题是,它还会选择当前一周中未来日期的记录。如何阻止这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-07 21:32:54

只需在当前日期添加一个条件即可:

代码语言:javascript
复制
SELECT o.*
FROM orders o
WHERE YEARWEEK(order_date, 1) = YEARWEEK(CURDATE(), 1) AND
      order_date <= CURDATE()
ORDER BY order_date DESC;
票数 3
EN

Stack Overflow用户

发布于 2020-08-07 22:10:27

请注意:如果您在函数中使用order_date列来构建where子句,这将导致查询不使用order_date上的索引,因此如果您的表可能很大,则应该避免查询。

如果计算当前周的第一个日期,则可以只使用order_date构建where子句,并且它将使用索引。

也许this可以帮助激励你:

代码语言:javascript
复制
WHERE order_date BETWEEN DATEADD(DAY, -WEEKDAY(CURDATE())), CURDATE()) AND CURDATE()

我没有对此进行测试,但是使用文档将函数名改写为MySQL。这个想法是计算当前周的第一个日期,这样您就知道要过滤的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63302875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档