您好我有这个代码,我希望得到关闭的日志总数。
(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));
}
}
任何帮助将不胜感激。
答案 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为你完成这项工作。