sql查询年份差异取决于具体月份

时间:2014-12-17 17:45:57

标签: mysql sql datetime group-by date-difference

我正在为图书馆开发图书预订系统。在预订表中有以下字段:id_reservation,id_user,id_book,datetime。

id_user具有特定格式,例如: 2009897652 前四位数表示用户在系统中注册的年份。所有用户都在9月份注册(学校图书馆)。

我想计算用户注册年份的预订GROUP BY。 所以我必须找到今天和注册年9月之间的差异(年份整数)。

如何计算预订GROUP BY用户注册年份的任何帮助?

例如。

total_reservations| users_registered_years
 200              | 1 
 220              | 2 
 320              | 3
 400              | 4  

非常感谢!!

1 个答案:

答案 0 :(得分:1)

为什么不在一年之前完成呢?

select left(id_user, 4) as year, count(*)
from reservations 
group by left(id_user, 4)
order by year;

然后您可以减去当前年份:

select year(now()) - left(id_user, 4) as diff, count(*)
from reservations 
group by left(id_user, 4)
order by diff;

我不确定是否值得修复结果以使其在任何日期都正确,除非您打算将此查询放入应用程序中。然后逻辑只是添加一个偏移量,如year(now()) - left(id_user, 4) + (case when month(now()) >= 10 then 1 else 0 end)