生日用户在当前日期和接下来的7天之间无法处理条件

时间:2015-12-29 07:08:13

标签: php mysql

我已经写了一个简单的查询来检查当前日期和接下来7天之间的生日,这几天前工作正常,但现在返回0结果我找到的原因是它在12-29到01-05之间搜索所以我认为这就是为什么它没有回到这里查询:

SELECT `U`.`FirstName`, `U`.`LastName`, `U`.`UserGUID`, `U`.`ProfilePicture`
WHERE DATE_FORMAT(U.DOB,'%m-%d') 
BETWEEN DATE_FORMAT('2015-12-29 07:08:01','%m-%d') 
        AND DATE_FORMAT('2016-01-05','%m-%d')

3 个答案:

答案 0 :(得分:2)

将查询更改为:

  SELECT `U`.`FirstName`, `U`.`LastName`, `U`.`UserGUID`,
 `U`.`ProfilePicture` WHERE DATE_FORMAT(U.DOB,'%m-%d') BETWEEN
 date_format(DATE_FORMAT('2015-12-29 07:08:01','%y-%m-%d'),'%m-%d') AND
 Date_Format(DATE_FORMAT('2016-01-05','%y-%m-%d'),'%m-%d')

答案 1 :(得分:0)

您可以按DATE_FORMAT(U.DOB,'%Y%m')使用字符串比较。

DATE_FORMAT(U.DOB,'%Y%m')应返回日期,例如: YYYYMM 。您还需要更改变量的格式或对它们使用相同的方法。

SELECT `U`.`FirstName`, `U`.`LastName`, `U`.`UserGUID`, `U`.`ProfilePicture` 
WHERE DATE_FORMAT(U.DOB,'%Y%m') >= DATE_FORMAT('2015-12-29 07:08:01','%Y%m') AND 
DATE_FORMAT(U.DOB,'%Y%m') <= DATE_FORMAT('2016-01-05','%Y%m')

答案 2 :(得分:0)

你可以在下面找到

SELECT `U`.`FirstName`, `U`.`LastName`, `U`.`UserGUID`, `U`.`ProfilePicture` WHERE DAY(cast(U.DOB as datetime)) BETWEEN DAY(cast('2015-12-29 07:08:01' as datetime)) AND DAY(cast('2016-01-05' as datetime)) AND 
MONTH(CAST(U.DOB AS DATETIME)) BETWEEN MONTH(CAST('2015-12-29 07:08:01'AS DATETIME)) AND MONTH(CAST('2016-01-05' AS DATETIME))