计算不同的时间超过2天

时间:2017-07-04 09:20:25

标签: php mysql

您好我有这个代码,我希望得到关闭的日志总数。

  

(A)超过2天。   (B)不到2天。

for($m=1; $m<=12; ++$m) {

   $next_year = $cur_year + 1;
   $monthName=date('M', mktime(0, 0, 0, $m, 1)).'';
   $monthNumber  = date('m', mktime(0, 0, 0, $m, 1));
   $monthName  = date('F', mktime(0, 0, 0, $m, 1));
   $currentMonthText = date('Y-m-d', mktime(0, 0, 0, $m, 1));
   $nextMonthText    = date('Y-m-d', mktime(0, 0, 0, $m + 1, 1));

   $result= $DB->query("SELECT * FROM ".$DB->prefix("calldesk_log")." 
   WHERE MONTH(date_open)='$monthNumber' AND date_open >=  '$currentMonthText'
   AND date_open <  '$nextMonthText' AND status='Closed'") or die(mysql_error()); 


    while($row = $DB->fetchArray($result))
    {
       $id_report=$row['id_report)'];
       $date_open=$row['date_open'];
       $date_close=$row['date_close'];
       $diff = abs(strtotime($date_open) - strtotime($date_close));
       $min = floor($diff / (60*60*24)); 
    }
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果仅仅是天差异,让MYSQL使用DATE_ADD() Function完成工作,那么您将避免在您的实际代码中显而易见的经典日期错误(闰年,年变化等......)

以下是一些例子,取决于你想做什么,目前还不清楚......

过去2天和未来2天之间的日志(如果可能,但这是您在代码中执行的操作)

SELECT * 
FROM ".$DB->prefix("calldesk_log")." 
WHERE date_open BETWEEN DATE_ADD(curdate(), INTERVAL -2 DAY)
                    AND DATE_ADD(curdate(), INTERVAL  2 DAY)
  AND status='Closed'                   

当前日期与未来2天之间的日志

SELECT * 
FROM ".$DB->prefix("calldesk_log")." 
WHERE date_open BETWEEN curdate()
                    AND DATE_ADD(curdate(), INTERVAL  2 DAY)
  AND status='Closed'       

过去2天和当前日期之间的日志

SELECT * 
FROM ".$DB->prefix("calldesk_log")." 
WHERE date_open BETWEEN DATE_ADD(curdate(), INTERVAL  -2 DAY)
                    AND curdate()
  AND status='Closed'   

如果您想计算几个月而不是几天,只需更改INTERVAL:

DATE_ADD(curdate(), INTERVAL  -2 MONTH)

如果您想考虑时间,请使用NOW()代替curdate()

DATE_ADD(NOW(), INTERVAL  -2 DAY)

就是这样,你可以用纯SQL完成所有这些,让MySQL为你完成这项工作。