如何明天增加日期

时间:2012-07-16 04:54:06

标签: 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 (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>";

1 个答案:

答案 0 :(得分:1)

如果您有日期(字符串),并且想要为其添加N天:

$date = date($format, strtotime($date, "+{$N}day"));

如果您想从现在起计算N天的日期:

$date = date($format, time() + $N*86400); // 86400 is number of seconds in 1 day

另一方面(如果你的问题看起来真的那么......)你想要根据日期范围过滤结果,那么你有两个选择:

  1. SQL(在php之前)过滤结果 - WHERE date BETWEEN '$date1' and '$date2' 我强烈建议坚持使用这个选项,因为如果你的表有很多记录,php中的过滤结果将是cpu和内存消耗。

  2. 您可以先将两个日期转换为秒 - $time1 = strtotime($date1)(第二个日期相同,然后每次需要与范围进行比较时,转换您需要比较的日期,并检查结果整数是否介于之前计算的整数之间。


  3. 如果您有两个日期范围(一个在输入中 - $from$to),另一个在数据库中(InDateOutDate列),那么要获取记录在这些范围交叉的地方你可以这样做:

    `WHERE InDate >= '$to' AND OutDate <= '$from'`
    

    如果您只想从$dateA循环(在php中)到$dateB,那么您可以这样做:

    // 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) {
    }
    
相关问题