2014-03-27 4 views
1

나는 다음과 같은 SQL이 지난 삼일에게 제공되지 않습니다. 하지만이 쿼리의 결과를 위해서 var_dump 때, 나는 다음과 같은 수 (공간을 절약하기 위해 아래로 편집을, 숫자는 밖으로 편집)SQL 문은

array(28) { 
    [0]=> 
    array(2) { 
    ["DATE(`date`)"]=> 
    string(10) "2014-03-24" 
    ["SUM(`total`)"]=> 
    string(17) "xxx" 
    } 
    [1]=> 
    array(2) { 
    ["DATE(`date`)"]=> 
    string(10) "2014-03-23" 
    ["SUM(`total`)"]=> 
    string(6) "xxx" 

.. 그리고 그것은 2014년 2월 25일에 마쳤다. 지난 3 일간의 기록이 분명히 있습니다. 나는 그들을 테이블에서 볼 수 있습니다. SELECT CURDATE();을 실행하면 2014-03-27이됩니다. 왜 지난 3 일간 나에게 보여주지 않는거야?

답변

3

당신은

GROUP BY DATE(`date`) 

DAY()는 1에서 31까지, 날짜 월의 일을 반환해야합니다 동안

GROUP BY DAY(`date`) 

을하고, 그래서 다른 개월간 같은 값이있을 수 있습니다.

+0

고쳐졌습니다. 하지만 왜 이런 일이 일어 났는지 설명해 주시겠습니까? – Chud37

+0

@ Chud37 설명을 추가했습니다. – xdazz

+0

대단히 감사합니다. – Chud37

0

은 그냥 날짜 부분을 기반으로 이일 사이의 차이를 반환합니다 마지막 세 일 기록을

SELECT 
    DATE(`date`), SUM(`total`) 
FROM 
    `order` 
WHERE 
    `status` = '3' 
     AND **DATEDIFF**(DAY, date,GETDATE()) <= 3 

ORDER BY `date` DESC; 

DATEDIFF 기능을 표시합니다 코드 가깝지만 아래를 사용합니다. 여기서 우리는 datepart로 DAY를 사용합니다.