Php 如何增加日期

Php 如何增加日期,php,Php,我的数据库中有基于团队类型的记录。现在,我需要系统根据输入的日期显示数据库中整个团队的记录,即如果我输入2012年6月6日至2012年6月16日,则应显示从第一个日期到其他日期的所有记录。在php中 $sql="SELECT mstEmp.empname,InDate, dailyattendance.InTime,dailyattendance.OutTime,mstEmp.teamtype FROM mstEmp left join dailyattendance on (dailyatte

我的数据库中有基于团队类型的记录。现在,我需要系统根据输入的日期显示数据库中整个团队的记录,即如果我输入2012年6月6日至2012年6月16日,则应显示从第一个日期到其他日期的所有记录。在php中

$sql="SELECT mstEmp.empname,InDate, dailyattendance.InTime,dailyattendance.OutTime,mstEmp.teamtype FROM mstEmp left join dailyattendance on (dailyattendance.HolderName = mstEmp.empname) where (InDate between '$from' AND '$to') and mstEmp.teamtype='$chk' GROUP BY mstEmp.empname";
$res = mysql_query($sql);

while($row = mysql_fetch_row($res)) {           
  list($name,$indate,$in,$out,$t) = $row;
  if($row[1]==NULL ||$row[2]==NULL || $row[3]==NULL) { 
    $row[3]='NULL' ;
    $row[2]='NULL' ;
  } else {
    $row[2] = date("g:i A", $in);
    $row[3]= date("g:i A" ,$out);
  }
  $d3 = date("d-m-Y (D)", $in);
  $bg = '';
  if(date('D', $in) == 'Sun' || date('D', $in) == 'Sat')
    $bg = 'bgcolor=#EEEEEE';

  echo "<tr $bg><td colspan=4>Date: ".$d3."</td></tr>";
  if($indate != $date) {
    $date = $indate;
    echo "<tr>";
    echo "<td align=left width='35%'>".trim($name)."</td>";
    echo "<td align=center width='20%' >".$row[2]."</td>";
    echo "<td align=center  width='23%' >".$row[3]."</td>";
    echo "<td align=center width='16%'>".$t."</td>";
    //echo "</tr></table><br>";
  }
}
echo "</tr></table><br>";
echo "</form>";

如果您有一个日期字符串,并且希望向其中添加N天:

$date = date($format, strtotime($date, "+{$N}day"));
如果要计算从现在算起N天的日期:

$date = date($format, time() + $N*86400); // 86400 is number of seconds in 1 day
另一方面,如果你的问题真的是这样。。。如果希望根据日期范围筛选结果,则有两个选项:

在php之前的SQL中过滤结果-其中日期介于“$date1”和“$date2”之间 我强烈建议您坚持使用这个选项,因为如果您的表将有大量记录,那么php中的过滤结果将消耗cpu和内存

您可以先将两个日期转换为秒-$time1=strotime$date1,然后将第二个日期转换为相同的日期,然后每次需要比较范围时,也转换需要比较的日期,只需检查结果的整数是否在前面计算的两个日期之间

如果有两个日期范围,一个在input-$from和$to中,另一个在database InDate和OutDate列中,则要获取这些范围交叉的记录,可以执行以下操作:

`WHERE InDate >= '$to' AND OutDate <= '$from'`
// strtotime() converts date to number of seconds since Jan 1 1970
// 86400 is number of seconds in a day, so it ensures steps of 1 day
for($time=strtotime($dateA); $time<=strtotime($dateB); $time+=86400) {
}

不清楚你到底需要什么;你能清楚地说明你的代码应该做什么,以及它目前正在做什么吗?它还可以帮助您查看正在运行的查询、一些示例数据以及所需的给定数据的输出示例;事实上,代码会对变量进行不相关的比较,以分配新的值,该值在$sql=SELECT mstEmp.empname、InDate、DAILYATTENDACE.InTime、DAILYATTENDACE.OutTime、,mstEmp中的mstEmp.teamtype从mstEmp left join DAILYATTENDACE.HolderName=mstEmp.empname,其中InDate介于“$FROM”和“$to”之间,mstEmp.teamtype=mstEmp.empname的“$chk”组;所以,您已经只有InDate在$from和$to之间的记录了……您的循环是在mysql的行上工作,而不是在日期上工作。。。InDate和OutDate是结果行的一部分,每行可能有不同的日期集。你想要达到什么目标?有一个员工团队,希望看到整个团队从开始到结束都在超时工作。所以,让我直说吧。。。您的输入是$from和$to?您想显示InDate过期日期范围和$from-$to日期范围具有公共日期的所有记录吗?