【问题标题】:Counting records for the current week统计本周的记录
【发布时间】:2016-09-20 00:28:35
【问题描述】:

我目前的数据库表有一个名为 date 的 unix 时间戳列。例如,我正在尝试获取当前一周每天计数的信息

周一:21 周二:0 周三:3 周四:8 周五:0 周六:0 太阳:0

我知道如何获取过去 7 天的信息,但是我只需要显示本周的信息,因此如果今天是星期一,那么星期二将不会显示任何数据,因为星期二还没有到来。

任何指针将不胜感激。

【问题讨论】:

  • 星期一是什么时候你需要在一周的剩余时间里显示零?
  • 如果当前日期是星期一星期二/星期三等应该什么都不显示,因为日期还没有过去。
  • 你能用虚拟数据发布你的数据库结构吗?

标签: php mysql


【解决方案1】:

这应该可行:

SQL

SELECT COUNT(*) FROM mytable WHERE YEARWEEK(reg_date) = YEARWEEK(CURRENT_TIMESTAMP)

【讨论】:

  • 似乎没有得到任何结果这是我使用的 SELECT COUNT(*) FROM registrations WHERE YEARWEEK(dateline) = YEARWEEK(CURRENT_TIMESTAMP);
【解决方案2】:

试试这个;)

SELECT dayInWeek, SUM(cnt) AS cnt
FROM (
    SELECT
        DATE_FORMAT(dateline, '%a') AS dayInWeek,
        COUNT(1) AS cnt,
        WEEKDAY(dateline) AS idx
    FROM registrations
    WHERE WEEK(dateline, 1) = WEEK(NOW(), 1) GROUP BY WEEKDAY(dateline)
    UNION SELECT 'Mon' AS dayInWeek, 0 AS cnt, 0 AS idx
    UNION SELECT 'Tue' AS dayInWeek, 0 AS cnt, 1 AS idx
    UNION SELECT 'Wed' AS dayInWeek, 0 AS cnt, 2 AS idx
    UNION SELECT 'Thu' AS dayInWeek, 0 AS cnt, 3 AS idx
    UNION SELECT 'Fri' AS dayInWeek, 0 AS cnt, 4 AS idx
    UNION SELECT 'Sat' AS dayInWeek, 0 AS cnt, 5 AS idx
    UNION SELECT 'Sun' AS dayInWeek, 0 AS cnt, 6 AS idx) TMP
GROUP BY dayInWeek
ORDER BY idx

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多