使用 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 日编写了一个疯狂的算法,用于计算任何一天开始和结束的任何一周。
| 归档时间: |
|
| 查看次数: |
33642 次 |
| 最近记录: |