2013-05-14 2 views
1

특정 응용 프로그램에서 시작 및 종료 날짜를 입력하도록 사용자에게 요청합니다. 그렇다면 아니오를 계산합니다. 이 두 날짜 사이의 주.논리적 쿼리로 주 계산

주어진 기간 동안 매주 생성 된 문서를 가져오고 싶습니다. 첫 번째 주, 두 번째 주, 세 번째 주 등을 가져 오는 데 도움이되는 논리를 구현할 수 없습니다.

데이터베이스의 입력으로 사용하고 그래프를 만듭니다. 나는 PHP를 서버 측 언어로 사용하고있다. 누구든지 나에게 알고리즘을 제안 할 수 있습니다.

예 :

Start date: 20/07/2012 

End Date: 19/02/2013. 

Total no. of days: 214. 

Total no. of weeks: 30 (30 weeks and 4 days) 

나는 아무 27/07/2012과에 20/07/2012의 기간을 가져 싶다. 이 기간 동안 문서 도구에 대한 2015 년 2 월 15 일까지 여기에 귀하의 데이터베이스 구조를 보지 않고

+0

사용 총 횟수와 같은 함수() 및 그룹 4이다 https://dev.mysql.com/doc/refman/5.5/en/date-and- time-functions.html – Waygood

답변

0

당신이 weekofyear에 의해

SELECT YEAR(doc_created) AS report_year, WEEKOFYEAR(doc_created) AS report_week, COUNT(*) AS doc_count 
FROM documents 
WHERE doc_created BETWEEN '2012-07-20' AND '2013-07-19' 
GROUP BY YEAR(doc_created), WEEKOFYEAR(doc_created) 

그룹을 필요로 무엇의 샘플입니다 내년 겹칠 수 있습니다 기간으로 충분하지 않다, 그래서 우리는 또한 올해 포함해야한다.

possible results: 
year week docs 
2012 1  4 
2012 3  1 
2013 1  65 
2013 2  4 

(2012 주 1은 2013 주 1과 겹칠 것입니다.

(그리드/그래프 용) 참조 번호 (연도) 및 금액 (문서)
예 : 2012wk1는 2012wk3 년도 연도 AND 주 1 개

+0

데이터베이스 요소를 처리 했으므로 그래픽 이미지에 이러한 세부 정보를 구현하는 알고리즘이 필요합니다. 지금은 당일에 선택한 문서 수만큼 인쇄 할 수 있습니다. – Ameya

+0

위 쿼리는 매주 ___ 일 때 'report_year, report_week, doc_count' __for를 제공하므로 알고리즘이 필요하지 않으므로 숫자를 그리드 나 이미지에 꽂기 만하면됩니다. (체크 아웃 http://phpchart.net/) – Waygood

-1
Try this code: 



    $start_date = "20-07-2012"; 
    $end_date = "20-08-2012 "; 

    while($start_date){ 
     if(strtotime($start_date) > strtotime($end_date)){ 
      exit; 
     } 
     $start_date = strtotime("+7 day", strtotime($start_date)); 
     $start_date = date("d-m-Y", $start_date); 
     echo $start_date; 
     echo "<br/>"; 
    } 
+0

영국 날짜 strtotime() 제대로 작동하지 않습니다. 가능한 경우 미국이라고 가정합니다. 2012 년 1 월 3 일부터 3 월 1 일까지는 3 월 1 일을 제공합니다. – Waygood

+0

exit를 사용하여 while 루프를 중지 하시겠습니까? 너 진심이야?! – Waygood