簡體   English   中英

計算超過2天的差異

[英]count where different is more than 2 days

嗨,我有這段代碼,我想獲取關閉的日志總數。

(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)); 
    }
}

任何幫助將不勝感激。

如果只是幾天的差異,那么讓MYSQL使用DATE_ADD()函數來完成這項工作,您就可以避免在實際代碼中很明顯的經典日期錯誤(le年,年份更改等)。

以下是一些示例,具體取決於您要執行的操作,目前尚不清楚...


過去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'                   

當前日期和未來兩天之間的日志

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'   

如果您要數月而不是數天,只需更改時間間隔:

DATE_ADD(curdate(), INTERVAL  -2 MONTH)

如果要考慮時間,請使用NOW()而不是curdate()

DATE_ADD(NOW(), INTERVAL  -2 DAY)

就是這樣,您可以使用純SQL完成所有這些操作,然后讓MySQL為您完成這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM