1

終了日と開始日の差が 2 以下の行の総数を取得する必要があります。ただし、たとえば開始日が 11-29-2012 で、終了日は 2012 年 3 月 12 日です。2012 年 12 月 1 日は土曜日で、2012 年 2 月 12 日は日曜日なので、差は 4 ではなく 2 になるはずです。

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' 
4

1 に答える 1

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++;
    }   
 }

私はコードをコンパイルしていませんが、うまくいくことを願っています

于 2012-12-13T10:28:06.223 に答える