php - SQL查询按给定日期范围对记录进行分组

标签 php mysql sql

我有一个表,其中有一些字段,其中有一个 checkup_date 字段(type=datetime,例如:value= '2013-11-13 14:20:30')。我按年份写了一个查询组

SELECT year(eh_patient_checkup.checkup_date) as 'Year', count(*)
  FROM phcdb.eh_patient_checkup eh_patient_checkup
GROUP BY year(eh_patient_checkup.checkup_date)

它显示的结果如下

Year ----- count(*)
-----------------
2011 ----- 203
2012 ----- 1007
2013 ----- 3020

但我希望它按每年 4 月 1 日到 3 月 31 日(明年)进行 GROUP BY。例如

Year ------------------------- count(*)
--------------------------------------
2011-04-01 to 2012-03-31 ----- 203
2012-04-01 to 2013-03-31 ----- 5656
2013-04-01 to 2014-03-31 ----- 1213

任何人都可以帮助我改进我的查询吗?

最佳答案

您可以使用datediff

SELECT date_add('2013-04-01', INTERVAL YearDiff YEAR) 'from date'
, date_add('2013-04-01', INTERVAL YearDiff + 1 YEAR) 'to date'
, Amount
FROM
(
    SELECT floor(datediff(eh_patient_checkup.checkup_date,'2013-04-01') / 365) as 'YearDiff', count(*) AS 'Amount'
    FROM phcdb.eh_patient_checkup eh_patient_checkup
    GROUP BY floor(datediff(eh_patient_checkup.checkup_date,'2013-04-01') / 365)
) as temp

唯一要做的工作是您必须在选择中获得正确的年份范围。

关于php - SQL查询按给定日期范围对记录进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19949854/

相关文章:

php - HTML 表的即时搜索栏,包含 MySQL 表中的信息

php - 执行 while 循环以从数据库中获取记录时出错

sql - MS SQL 表的物理大小

python - 使用 python 创建 Mysql 数据库 - 不断收到 1064 错误(...在 '%s' 附近使用正确的语法)

php - 如何使用 php shell_exec 和 sql 命令行创建数据库

php - 使用 php ajax 在将数据从数据库检索到搜索框时显示结果

c++ - MySQL服务器消失了

mysql - 使用动态确定的值更新表

php - 对于公共(public)配置文件系统,查询 WHERE id ='. $something .' 时出现 Sql 错误

php - 如何跳过 mysql 中的每隔一行?