[英]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.