【问题标题】: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 天。

【问题讨论】:

    标签: mysql sql database date where-clause


    【解决方案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 :谢谢...我用你的查询和小提琴更新了我的答案。
    • 不用担心,因为您已经确定了查询中最重要的部分,所以我自己发帖没有任何意义
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多