【问题标题】:mysql request every week since last 6 months自过去 6 个月以来每周 mysql 请求
【发布时间】:2016-10-22 15:58:15
【问题描述】:

我正在尝试请求我的数据库获取过去 6 个月中出现特定登录名的行数,按周数排序。

输出必须是这样的:

我的要求是这样的:

SELECT count(*)  FROM table1 where (`EndDate` BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) and CURDATE()) AND the_login LIKE 'LOGIN 1';

它现在显示过去 6 个月的每一行。 如果需要,您能否完成我的请求或更改它?

【问题讨论】:

    标签: mysql database sorting date


    【解决方案1】:

    您可以使用YEAR()WEEK() 从日期中提取它们,并按它们分组。

    请注意,我没有只使用 WEEK,因为这还不够,如果您在 6 月之前执行此操作,可能会误解几周。

    另外,不要将LIKE 用于完全匹配,仅用于部分比较。

    SELECT YEAR(t.endDate) as m_Year, WEEK(t.endDate) as m_Week, count(*)
    FROM table1 t
    where t.`EndDate` BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) 
                          and CURDATE())
      AND t.the_login = 'LOGIN 1'
    GROUP BY m_Year,m_Week
    

    【讨论】:

    • @R.co 记得标记为答案,以便其他人可以轻松看到它
    • 是的,我知道,我只需要等待 2 分钟 ^_^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多