SQL查询以获取每周的最后一天

ran*_*omx 10 mysql

使用 MySQL,我需要查询具有日期时间字段的表。我需要计算特定一周的所有记录。使用 date_format(colname, "%Y %V") 返回周#,但我需要该周的最后一天(01-28|29|30|31)。

输出例如

    COUNT(*) | 日期
    11 | 2012-01-07
    22 | 2012-01-14
    123 | 2012-01-21

帮助?

注意:就我而言,一周的最后一天是星期日。

Rol*_*DBA 13

您需要使用DAYOFWEEK函数

如果周末在星期六,任何日期都可以变成星期六。

例如,这计算即将到来的星期六

SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
Run Code Online (Sandbox Code Playgroud)

这将计算即将到来的星期日(您必须改用WEEKDAY函数)

SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY); 
Run Code Online (Sandbox Code Playgroud)

对于名为 mytable 的表和名为 theDate 的日期列,您的总和将是

周六

SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
    SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
    FROM mytable
) A GROUP BY EndOfWeekDate;
Run Code Online (Sandbox Code Playgroud)

星期日

SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
    SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
    FROM mytable
) A GROUP BY EndOfWeekDate;
Run Code Online (Sandbox Code Playgroud)

试一试 !!!

请注意,如果您想要周六和周日以外的任何其他周末,我在 2011 年 9 月 22 日编写了一个疯狂的算法,用于计算任何一天开始和结束的任何一周