2012-12-13 2 views
1

끝 날짜와 시작 날짜의 차이가 2보다 작거나 같은 행의 총 수를 가져와야합니다. 그러나 예를 들어 내 시작이 토요일과 일요일을 건너 뛸 필요가 있습니다. 날짜는 11-29-2012이고 종료일은 12-03-2012입니다. 12-1-2012가 앉고 12-2-2012가 일요일이므로 4 대신 2의 차이를 가져야합니다.MySQL Datediff skur saturday and sunday

날짜 설정 E는 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' 

답변

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

확인하지만 난 그것을

+0

내가 우리의 코드에서이 작업을 수행하지 못할 일을 희망 주로 정확한 쿼리 그룹에 의해있다 끝 날짜. 예를 들어 2012-12-12의 의미는 주말을 제외하고 <= 2 인 날짜 차이가있는 4 개의 결과를가집니다. 그래서 나는 쿼리에서 그것을 할 필요가있다. – Kiel

+0

그래서 쿼리에서이 작업을 수행해야합니다 –

+0

날짜 차이를 계산하기 위해 mysql 서버에 프로 시저 또는 함수를 생성 할 수 있습니다 [http://dev.mysql.com/doc/refman/5.0/en/create-procedure]. html] –