仅获取从一周的第一天到一周的当前日期的数据
Posted
技术标签:
【中文标题】仅获取从一周的第一天到一周的当前日期的数据【英文标题】:Getting only the data from the first day of the week to the current day of the week 【发布时间】:2019-06-26 13:13:29 【问题描述】:所以我想选择本周记录的所有行。
例如。今天是 2019 年 1 月 30 日,也就是星期三。我想选择从星期一(2019 年 1 月 28 日)到星期三(当天)的所有行。而当明天到来时,周四添加的行也会被选中。
这将持续到周日。而当下周星期一到来时,它只会选择该星期一记录的行。 (2019 年 2 月 4 日)等等。
我只需要获取(本周)数据,而不是过去 7 天的数据。
I have a dateadded column
-----------------------------
Firstname|Lastname|dateadded
Michael |Jordan |2019-02-03 <-(Feb 3, 2019)
Mark |Perez |2019-01-30
Paul |George |2019-01-28
John |Wayne |2019-01-25
-----------------------------
仅选择本周添加的数据的查询。 马克佩雷斯和保罗乔治在当天的同一周。
select * from names WHERE YEARWEEK(`dateadded`, 1) = YEARWEEK(CURDATE(), 1)
将仅选择 curdate 的最后 7 天。
【问题讨论】:
【参考方案1】:你有你的桌子看起来如何的例子吗? 您可以插入带有日期和周数的记录。 如果您按周数记录天数,这很容易:
SELECT * FROM weektable WHERE weekno='5';
.. 一年有 52 周..
这将选择第 5 周的所有内容,并将自动从同一周数添加新行。
【讨论】:
... 以及所有 ~5.6 年 53 周。【参考方案2】:您可以使用WEEKDAY()
来获取一周中当前日期的天数,如果从当前日期开始,则提取:
SELECT SUBDATE(CURDATE(), WEEKDAY(CURDATE()))
产量:
2019-01-28
Demo on DB Fiddle
正如Nick 所评论的,这里是一个使用上述方法过滤表的查询示例:
SELECT t.*
FROM test t
WHERE t.idate >= SUBDATE(CURDATE(), WEEKDAY(CURDATE()))
ORDER BY t.idate
Demo on DB Fiddle
【讨论】:
我认为 OP 可能想要一个类似dbfiddle.uk/…的答案 @Nick :谢谢...我用你的查询和小提琴更新了我的答案。 不用担心,因为您已经确定了查询中最重要的部分,所以我自己发帖没有任何意义以上是关于仅获取从一周的第一天到一周的当前日期的数据的主要内容,如果未能解决你的问题,请参考以下文章