Php 根据两个日期之间的天数从SQL中提取数据

Php 根据两个日期之间的天数从SQL中提取数据,php,sql,phpmyadmin,datediff,Php,Sql,Phpmyadmin,Datediff,我有一个SQL中的STUDENT表,带有一个名为“DateCompleted”的“DATE”(2018-04-23)格式列 我想做的是吸引那些“日期完成”日期与今天的日期相差不到5天的学生 我在这里发现了很多问题,回答了我所需要的一小部分,这就是我目前所拥有的。代码运行,但什么也没发生 $getToday = date("Y-m-d"); $SQLstring = "SELECT * FROM STUDENT WHERE Department='" . $dept . "'"; $SQLGe

我有一个SQL中的STUDENT表,带有一个名为“DateCompleted”的“DATE”(2018-04-23)格式列

我想做的是吸引那些“日期完成”日期与今天的日期相差不到5天的学生

我在这里发现了很多问题,回答了我所需要的一小部分,这就是我目前所拥有的。代码运行,但什么也没发生

$getToday = date("Y-m-d");

$SQLstring = "SELECT * FROM STUDENT WHERE Department='" . $dept . "'";

$SQLGetCompleted = "AND (DATEDIFF(d, " . strtotime($getToday) . ", DateCompleted) < 5")

$db_selected = mysqli_query($con, $SQLstring . $SQLGetCompleted);
$getToday=date(“Y-m-d”);
$SQLstring=“从学生所在部门选择*”$部。"'";
$SQLGetCompleted=“AND(DATEDIFF(d,.strottime($getToday)。”,DateCompleted)<5”)
$db_selected=mysqli_查询($con,$SQLstring.$SQLGetCompleted);
DATEDIFF应该返回从今天到DateCompleted之间的天数,如果少于5天


注意:$getToday必须是在SQL字符串中格式化的字符串,否则如果您尝试在字符串中放入日期值,它将出错。

首先,您应该学会使用参数。其次,您的查询将类似于以下查询之一

对于过去五天内发生的任何事情:

where datecompleted >= curdate() - interval 5 days and
      datecompleted <= curdate()  -- may not be needed
其中datecompleted>=curdate()-间隔5天
datecompleted=curdate()-间隔5天
datecompleted

如果
datecompleted
实际上有一个时间组件,那么您需要更加小心。您的示例数据表明这只是一个日期。

首先,您应该学会使用参数。其次,您的查询将类似于以下查询之一

AND (DATE(DateCompleted) - fn Now()) < 5
对于过去五天内发生的任何事情:

where datecompleted >= curdate() - interval 5 days and
      datecompleted <= curdate()  -- may not be needed
其中datecompleted>=curdate()-间隔5天
datecompleted=curdate()-间隔5天
datecompleted
如果
datecompleted
实际上有一个时间组件,那么您需要更加小心。您的示例数据表明它只是一个日期。

和(date(DateCompleted)-fn Now())<5
AND (DATE(DateCompleted) - fn Now()) < 5

和日期(DateCompleted)

和日期(DateCompleted)
和(日期(DateCompleted)-fn Now())<5

和日期(DateCompleted)

和日期(DateCompleted)
您可能希望在“
”和“
”前面加一个空格,…
类似于“
”和……”
是否收到错误消息?或者仅仅不是您希望添加的数据
ini\u set('display\u errors',1);ini_集(“日志错误”,1);错误报告(E_全部);mysqli_报告(mysqli_报告错误| mysqli_报告严格)到脚本的顶部。这将强制任何
mysqli\uuuu
错误生成一个异常,您可以在浏览器上看到,其他错误也将在您的浏览器上看到。没有错误,我正在浏览器中运行,它似乎只运行了一段时间。您是否真的在测试并显示错误?您可能希望在
“还有…
”和…
你会收到错误消息吗?或者仅仅不是你想要的数据添加
ini_集('display_errors',1);ini_集('log_errors',1);error_reporting(E_ALL);mysqli_report(mysqli_report_error)| mysqli_report_STRICT)
到脚本的顶部。这将强制任何
mysqli_uu
错误生成一个异常,您可以在浏览器上看到,其他错误也可以在浏览器上看到。没有错误,我正在浏览器中运行,它似乎只运行了一段时间。您真的在测试并显示错误吗?这不是真的一个
php
问题:如果是这样的话,他还需要使用预先准备好的语句,所以这个答案很有帮助,因为它是
MySQL
唯一的答案我删除了额外的参数。curdate()吗以YYYY-mm-dd格式返回今天的日期?@Ken…这是ANSI/ISO标准的日期格式。这根本不是一个
php
问题:如果是这样,他还需要使用准备好的语句,所以这个答案很有帮助,因为它是
MySQL
唯一的答案。我删除了额外的参数。curdate()返回YYYY mm dd格式的今天日期?@Ken…这是ANSI/ISO标准的日期格式。
fn Now()
的意思是什么?这看起来不像是有效的SQLHold up,我认为这家伙的答案是有效的。除了我现在使用CURDATE()。我设法在我询问的参数内获取数据这有效:并且DateCompleted>=CURDATE()-5.谢谢你的帮助。很高兴它成功了:).Nico,fn NOW()是一个非标准的SQL命令,与CURDATE相同吗
fn NOW()
的意思是什么?这看起来不像是有效的SQLHold up,我认为这个答案有效。除了我现在使用CURDATE()之外.I设法在我询问的参数内获取数据。此命令有效:和DateCompleted>=CURDATE()-5。感谢您的帮助。很高兴它有效:).Nico,fn NOW()是一个非标准SQL命令,与CURDATE的作用相同
AND DATE(DateCompleted)  <  GETDATE() - 5