php - 获取即将到来的生日 Mysql 和 PHP

标签 php mysql

我一直在尝试使用 mysql 语句和 php 获取即将到来的生日。问题是我见过一些解决方案,但它们使用日期字段。不幸的是,我的存储为时间戳。如果生日在 1970 年之后,下面的代码只会产生结果。我怎样才能得到一个查询,该查询将给我即将到来的生日的当前月份、下个月、下个月等等?我怎样才能让它也忽略年份?

    $sql_query = "
        SELECT mem_id, DATE_FORMAT(FROM_UNIXTIME( birthdate ),'%d/%m/%Y') 
)
        FROM profiles
        WHERE
            IF ( MONTH( NOW() ) < 12,
              MONTH( DATE_FORMAT(FROM_UNIXTIME( birthdate ),'%Y%m%d') ) = MONTH( NOW() ) + 1,
              MONTH( DATE_FORMAT(FROM_UNIXTIME( birthdate ),'%Y%m%d') ) = 1)
        ORDER BY birthdate";

最佳答案

我一直在搜索这段代码,但找不到干净/简单的查询(也适用于闰年(2 月 29 日问题))

所以我自己做了。

这是获取接下来 x 天即将到来的生日的最简单代码,(此查询还显示昨天的生日(或者您可以将其更改为过去的 x 天数)

SELECT name, date_of_birty FROM users WHERE 
        DATE(CONCAT(YEAR(CURDATE()), RIGHT(date_of_birty, 6)))
                BETWEEN 
                DATE_SUB(CURDATE(), INTERVAL 1 DAY)
                AND
                DATE_ADD(CURDATE(), INTERVAL 5 DAY)

关于php - 获取即将到来的生日 Mysql 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3783286/

相关文章:

mysql - 将 MySQL Workbench 链接到我的远程服务器

php - 存储大型 JSON - 二进制或文本

mysql - 使用 4 个 JOINS 和优化 MySQL 查询

从 MYSQL 结果建立链接的 PHP 脚本?

php - 比较 2 个字符串,减去相同的字符并返回新值

php - ADOdb 输出具有 double 值

需要 MySQL 查询设计帮助

删除行后mysql表的大小没有减小

PHP 通过嵌套键值删除数组

php - 随机排序php数组