Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当前日期和未来7天之间的生日用户不使用“介于”条件_Php_Mysql - Fatal编程技术网

Php 当前日期和未来7天之间的生日用户不使用“介于”条件

Php 当前日期和未来7天之间的生日用户不使用“介于”条件,php,mysql,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'

我写了一个简单的查询来检查当前日期和未来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')
将查询更改为:


您可以通过
DATE\U格式(U.DOB,'%Y%m')
使用字符串比较

DATE_格式(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')
选择`U`.`FirstName`、`U`.`LastName`、`U`.`UserGUID`、`U`.`ProfilePicture`
其中日期格式(U.DOB,'%Y%m')>=日期格式('2015-12-29 07:08:01','%Y%m')和
日期格式(U.DOB,“%Y%m”)您可以得到如下所示

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)) 

是的,你应该检查年份,但我需要检查生日而不是生日。那些生日在2015年或2016年之前的人呢?请改进你的问题并添加表结构
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))