仅获取从一周的第一天到一周的当前日期的数据

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 :谢谢...我用你的查询和小提琴更新了我的答案。 不用担心,因为您已经确定了查询中最重要的部分,所以我自己发帖没有任何意义

以上是关于仅获取从一周的第一天到一周的当前日期的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何获取当月第一周的日期

java 获取某一月的所有周的日期段(周一到周日)

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

在 SQL Server 中获取一周的第一天

C#如何获取指定周的日期范围

Excel中如何计算日期所在的这年的第几周,以周一作为一周的第一天