如何以52周格式获取Mysql数据?

时间:2017-11-08 13:05:54

标签: mysql sql

我带有以下数据的小时表

  Id  | user_id | login_date | hours
   1  |  123    | 01-01-2017 |   8
   2  |  123    | 02-01-2017 |   6
   .  |  ...    | .......... |   .
   .  |  ...    | .......... |   .
   .  |  123    | 31-12-2017  |  7  

当我从下拉列表中选择用户和日期范围时,无论如何在mysql中我是否可以通过以下方式获取数据?

  Id  | week_No | total_hours
   1  |  1      |  40
   2  |  2      |  30
   .  |  ...    | 
   .  |  ...    | 
   .  |  52     |  38

我尝试过使用PHP循环但它在数据库中查询大约52次。有没有其他方法我可以用上面提到的方式直接从mysql获取数据表,这样我们就可以节省处理时间。

3 个答案:

答案 0 :(得分:3)

还需要使用函数WEEK从date或datetime数据类型生成周数。

查询

SELECT 
   id
 , WEEK(login_date) AS week_No
 , SUM(hours) AS hours 
FROM 
 [table]
GROUP BY
   id
 , WEEK(login_date)

答案 1 :(得分:1)

使用WEEK()函数:

SELECT WEEK('01-01-2017');

MySql WEEK()

答案 2 :(得分:0)

终于得到了解决方案。

SELECT (select @rownum := @rownum + 1 from ( select @rownum := 0 ) d2 ) as rownumber, 
WEEKOFYEAR(login_date) as w, SUM(final_total) as final FROM `login_table` 
WHERE login_date BETWEEN '2017-01-01' AND '2017-12-31' AND user_id = 470 AND 
organisation_id = 191 GROUP BY WEEK(login_date) ORDER BY rownumber