2017-02-17 106 views
1

我需要获取一周内注册的用户数,给定开始日期和结束日期。 现在所用的逻辑是:Mysql获取两个日期之间的每周报告

week_days_list = [['2017-01-01', '2017-01-07'], ['2017-01-08', '2017-01-14']] 

for week in week_days_list: 
    query = 'SELECT COUNT('*') AS `__count` FROM `user_table` 
      INNER JOIN `user_auth` ON (`user_table`.`user_id` = `user_auth`.`id`) 
      WHERE `user_auth`.`date_joined` BETWEEN week[0] 
      AND week[1];' 

结果是:


__count


我希望它也降低到1个查询。 例如:


Week Interval | count

'2017-01-01'| 15

'2017-01-08'| 12


回答

0

由事实去你考虑1周2017年将是2017年1月1日至2017年1月7日,你可以像下面这样做:

SELECT 
    YEAR(date_joined) `__year`, 
    WEEK(date_joined) `__week`, 
    COUNT(*)   `__count` 
FROM 
    user_table 
JOIN 
    user_auth ON 
     user_table.user_id = user_auth.id 
GROUP BY 
    YEAR(date_joined), 
    WEEK(date_joined) 

我应该注意,这是完全未经测试的。

0
Use the __range operator: 

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date)) 
相关问题