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

问题描述 投票:0回答:3

我的小时表包含以下数据

  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获取数据表,这样我们就可以节省处理时间。

mysql sql
3个回答
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
投票

使用WEEK()函数:

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

MySql WEEK()


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
© www.soinside.com 2019 - 2024. All rights reserved.