다음과 같은 쿼리가 있습니다. PHP와 MySQL의 주 차이점
SELECT COUNT(*), WEEK(date), YEAR(date) FROM myTable GROUP ON YEAR(date), WEEK(date)
는 다음과 같은 결과
지금 2012 년의 35 나는, 그러나 나의 WHERE 절에
WEEK(date)=35 AND YEAR(date)=2012
을 사용하지 않으 주에 모두 39 개 기록을 얻으려면
32 33 2012
43 34 2012
39 35 2012
17 36 2012
을 생산하는 말 색인을 활용하지 않습니다. 대신 경계를 찾고 조건문을 사용하고자합니다. 반올림 오류가 발생할 수 있으므로 BETWEEN을 사용하지 않으려합니다.
그러므로 나는 다음과 같은 생각을 시도해보십시오. 그러나 모두 39 개의 레코드를 얻지는 마십시오. 분명히 MySQL과 PHP는 몇 주 동안 다르게 처리합니다. 나는 MySQL WEEK()가 0, 2, 4, 6 모드를 사용하여 일요일로 시작하는 주를 모두 반환한다는 것을 알았다. 사람들이 가장 일반적으로 사용하는 것이 가장 이상적입니다. 가장 중요한 것은 DateTime에서 제공하는 것과 동일하다는 것입니다. 내가 어떻게 그럴 수 있니? 감사합니다
$w=35;$y=2012; //Given
$w=sprintf('%02d',$w); //Make sure it is two digits
$date = new DateTime($y.'W'.$w);
$d1=$date->format('Y-m-d');
$date->add(new DateInterval('P1W'));
$d2=$date->format('Y-m-d');
$sql='SELECT * FROM myTable WHERE date >= ? AND date < ?';
MySQL은 differntly 당신이 그것을 전달하는 모드에 따라 주 수를 처리 (http://dev.mysql.com/doc/ [주 (날짜, 모드)를 참조] refman/5.5/ko/date-and-time-functions.html # function_week) 시스템 변수에서이 서버 전체를 설정할 수도 있습니다. – fiz
39 개 미만의 기록이 있습니까? 아마도 WHERE 조건은'date <=? '여야합니다. – BellevueBob
@fiz WEEK()이 다른 모드를 가지는 방식을 보았지만 어떻게 도움이 될지 확신하지 못했습니다. – user1032531