MySQL Datediff周六和周日跳过

时间:2012-12-13 09:27:31

标签: php mysql datediff

我需要得到行的总数,其中结束日期和开始日期的差异小于或等于2.但我需要跳过星期六和星期日,例如我的开始日期是11-29- 2012年和结束日期是12-03-2012我应该得到2而不是4的差异因为12-1-2012是坐着的,12-2-2012是星期天。

DateE是开始日期 ReplayDate是结束日期

SELECT  
   DATE_FORMAT(DateE, '%Y-%m-%d') AS startdate,
   DATE_FORMAT(ReplyDate, '%Y-%m-%d') AS replydate,   
   DATEDIFF(ReplyDate,DateE) as diff
FROM emailtodb.emailtodb_email 
WHERE 
   Status = 2  
AND
   DATEDIFF(ReplyDate,DateE)<=2
AND 
   DATE_FORMAT(DateE, '%Y-%m-%d') 
BETWEEN 
   '2012-11-29' AND '2012-12-12'  
AND 
   TIME_FORMAT(DateE, '%H:%i:00') 
BETWEEN 
   '00:00' AND '23:59' 

1 个答案:

答案 0 :(得分:0)

您可以在php脚本中查看它。获取startDate和endDate以及dateDifference后,请检查

$startDay = date('l', $startDate);
$endDay = date('l', $endDate);

if ($dateDifference < 4){
     if ( $startDay == 'Saturday' || $startDay == 'Sunday' ){
        $dateDifference--;
     }
     if ( $endDay == 'Saturday' || $endDay == 'Sunday' ){
        $dateDifference--;
     }
 }
 else{
    $totalWeek = (int) $dateDifference / 7;
    $dateDifference -= ($totalWeek + 1)*2;

    if ($startDay == 'Saturday' && $endDay = 'Saturday')
        $dateDifference++;
    else if ($startDay == 'Sunday' && $endDay = 'Sunday')
        $dateDifference++;
    else
    {
         if($endDate == 'Saturday')
             $dateDifference++;
        if ($startDay == 'Sunday')
            $dateDifference++;
    }   
 }

我没有编译代码,但我希望它能正常工作