我已经写了一个简单的查询来检查当前日期和接下来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')
答案 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))