mysql - SQL生日查询

标签 mysql

嘿,我是 SQL 的初学者,但我正在尝试编写一个查询来提取 future 7 天内某人生日的所有记录,并查看了其他线程的答案,但我有无法使它们适应我的设置。

    SELECT *
    FROM `QG04c`
    WHERE month( `dob` ) = month( now( ) )
    AND day( `dob` )
    BETWEEN day( now( ) )
    AND day( now( ) ) +7
    AND `Primary Unit?` =1

目前,这会拉出所有生日在 7 天内的人,但我认为它无法应对月末和年底等情况。

最佳答案

假设这是MySQL,您可以使用DAYOFYEAR函数获取生日发生的年份。简单的场景是从 1 月 1 日到 12 月 25 日,其中提前 7 天是同一年。为此,您可以使用:

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(DOB) - DAYOFYEAR(CURDATE()) BETWEEN 0 AND 7;

但是,当今天在 12 月 25 日至 12 月 31 日之间时,您需要考虑生日在 1 月 1 日至 6 日之间。为此,您需要:

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(CURDATE() + INTERVAL 7 DAY) < 7
AND     DAYOFYEAR(DOB) < DAYOFYEAR(CURDATE() + INTERVAL 7 DAY);

那么只需将两种情况结合起来即可:

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(DOB) - DAYOFYEAR(CURDATE()) BETWEEN 0 AND 7
OR  (   DAYOFYEAR(CURDATE() + INTERVAL 7 DAY) < 7
    AND DAYOFYEAR(DOB) < DAYOFYEAR(CURDATE() + INTERVAL 7 DAY)
    );

<强> Examples on SQL Fiddle

关于mysql - SQL生日查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134206/

相关文章:

字段值改变时MySQL触发

php - yii 中的关系错误

mysql - 主键的数据类型由一个表中的两个属性组成,用作另一个表的外键

php - 动态下拉 mysql 撇号问题

mysql - 更新内部连接问题

mysql - 当并非所有数据点都匹配时合并 mySQL 中的数据

php - 由于构造函数,Yii 模型 isNewRecord false

sql - select @@identity 是做什么的?

javascript - 如果数据库中存在输入,则重定向到 URL

javascript - 将 javascript 日期正确格式化为 MySQL