php - 接下来 7 天的生日计数以及每天需要的生日计数和总数

标签 php mysql sql phpmyadmin

我在这个网站上看到过这样的问题;但他们只是提供生日数据而不提供计数 例如:mysql query to get birthdays for next 10 days

SQL Select Upcoming Birthdays

这里我想要的是接下来 9 天的每一天的生日计数 2 天后:例如今天是 03-18,所以我想将 03-20 的数据发送到 03-26

这是我的查询

SELECT count(DOB) as count,DAYOFMONTH(DOB) as day 
from patient 
where 
    day(DOB) >= day(DATE_ADD(CURDATE(), interval 2 day)) 
and day(DOB) < day(DATE_ADD(CURDATE(), interval 9 day)) 
and  month(DOB) < month(DATE_ADD(CURDATE(), interval 1 month))
group by day
ORDER BY day ASC

它给出的输出如下:

count   date
2444    03-20

2337    03-21

2354    03-22

2064    03-23

2118    03-24

2357    03-25

2181    03-26

但根据我的查询,它不正确,其中 DOB LIKE '%-03-20' 计数不同。

提前谢谢您。

最佳答案

一个好方法是生成一个包含这些生日的适当日期的子查询。这很好,因为它可以按月和按年滚动。

该子查询就是这样,满足您第 2-9 天的要求。

          SELECT MONTH(CURDATE()+INTERVAL 2+n DAY) mn, 
                 DAYOFMONTH(CURDATE()+INTERVAL 2+n DAY) dy
           FROM (
                   SELECT 0 n UNION ALL SELECT 1 UNION ALL
                   SELECT 2 UNION ALL SELECT 3 UNION ALL 
                   SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 
                ) seq

然后,您可以将该结果加入到您的出生日期列表中,并进行总结,如下所示。

SELECT COUNT(*), MONTH(p.DOB) birthday_month, DAYOFMONTH(p.DOB) birthday
  FROM patient p
  JOIN (
          SELECT MONTH(CURDATE()+INTERVAL 2+n DAY) mn, 
                 DAYOFMONTH(CURDATE()+INTERVAL 2+n DAY) dy
           FROM (
                   SELECT 0 n UNION ALL SELECT 1 UNION ALL
                   SELECT 2 UNION ALL SELECT 3 UNION ALL 
                   SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 
                ) seq
       ) d ON MONTH(p.DOB) = d.mn AND DAYOFMONTH(p.DOB) = d.dy
  GROUP BY MONTH(p.DOB), DAYOFMONTH(p.DOB)
  ORDER BY MONTH(p.DOB), DAYOFMONTH(p.DOB)

这应该会给你正确的计数。

在此类工作中使用数值范围非常容易出错。

关于php - 接下来 7 天的生日计数以及每天需要的生日计数和总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121936/

相关文章:

php - 使用php和mysql的随机数据

PHP PDO 如何显示 top SQL 计数

php - 在包含 PHP 变量的 HTML 字符串中转义引号的正确方法

java - 如何从 SQL 日期时间 UTC 转换为 LocalDateTime 并再次转换回来

MYSQL 和 Shell 脚本 : Reference individual row attributes from table results?

mysql - MySQL中如何根据相似度进行匹配排序?

mysql - 使用 like 和 order by 查询非常慢

php - 如何使用 MySQL 制作 PHP/HTML 表单?

php - 使用 https 通过 API 添加 GitLab 组

javascript - 使用 Javascript 通过 PHP 变量设置 HTML Date 元素的值