在一周前/中/周后获得生日

时间:2012-05-18 02:12:27

标签: php mysql

我有一个Facebook应用程序,它将用户生日存储在mysql数据库中作为varchar。我试图让所有用户生日

在一周内到来, 如果是在本周 如果生日是上周。

在我的php中我得到生日并用strtotime转换它们()

我可以轻松检查今天是否过生日

if (date('m-d') == date('m-d', $bday)) {
    // today is your bday!!
}

我在比较日期时失去了aahaha我知道我可以使用strtotime('nextweek')或类似的东西,但我不确定

2 个答案:

答案 0 :(得分:2)

查询将如下:

select * from table 
where bday between curdate() - INTERVAL 7 DAY and curdate() + INTERVAL 7 DAY

了解过去一周和下周的范围。

答案 1 :(得分:1)

如果bday是基于该人的出生年份,那么我不会看到与curdate()的比较会给你一个答案,除非该人不到7天。 =)

编辑:

你应该可以这样做:

$bday_this_year = strtotime(date('Y')   . '-' . date('m-d', $bday));
$bday_last_year = strtotime(date('Y')-1 . '-' . date('m-d', $bday));
$bday_next_year = strtotime(date('Y')+1 . '-' . date('m-d', $bday));

$last_week = strtotime("-1 week");
$next_week = strtotime("+1 week");

if (($bday_this_year > $last_week && $bday_this_year < $next_week) || ($bday_last_year > $last_week && $bday_last_year < $next_week) || ($bday_next_year > $last_week && $bday_next_year < $next_week)) {
// Happy Birthday duders!
}

计算不同年份的生日的原因是处理12月下旬的边缘情况,用户的生日是1月,或1月初,用户的生日是12月下旬等。

这个答案可能会得到改进,但它应该有效。