2011-05-06 5 views
2

두 가지 다른 날짜와 시간에서 정보를 가져와야하는 쿼리가 있습니다.
어제부터 오늘까지 그리고 어제로부터 18:00:00, 그리고 오늘부터 13:00:00까지 마지막으로 수정 된 시간 사이에 마지막으로 수정 된 날짜를 모두 가져 오려고합니다.날짜와 시간 사이에 쿼리를 실행하는 방법은 무엇입니까?

어떻게하면됩니까?

SELECT A1.CHCASN, 
     A1.CHTRKN, 
     SUM(A2.CDPAKU) AS UNITS, 
     A1.CHACWT, 
     SUM(A2.CDPRC * A2.CDPAKU) AS COST, 
     SUM(A3.STRPRC * A2.CDPAKU) AS RETAIL, 
     A1.CHDLM, 
     A1.CHTLM 
    FROM CHCART00 A1, 
     CDCART00 A2, 
     STSTYL00 A3 
    WHERE A1.CHCASN = A2.CDCASN 
    AND A2.CDSTYL = A3.STSTYL 
    AND A2.CDCOLR = A3.STCOLR 
    AND A2.CDSDIM = A3.STSDIM 
    AND A1.CHSTAT = '25' 
    AND A1.CHROUT = 'UPSCA' 
    AND A1.CHDLM BETWEEN 20110505 And 20110506 
    AND A1.CHTLM >= '160000' 
    AND A1.CHTLM <= '130000' 
GROUP BY A1.CHCASN, A1.CHTRKN, A1.CHACWT, A1.CHDLM, A1.CHTLM 
ORDER BY A1.CHCASN 
+5

BTW 니스 명명 규칙 .... –

+1

"유산"은 열 이름과 마찬가지로 여섯 글자 밖에 없습니다. –

+0

어떻게 '> = 16'과'<= 13'이 동시에 나올 수 있습니까? –

답변

5

아마이 :

AND (A1.CHDLM = 20110505 
     AND A1.CHTLM >= '160000' 
    OR 
     A1.CHDLM = 20110506 
     AND A1.CHTLM <= '130000' 
    ) 

더 일반성 (두 날짜가 연속하지 않을 때의 경우를 잡으려고), 그것은해야한다 :

AND (A1.CHDLM = 20110505 
     AND A1.CHTLM >= '160000' 
    OR 
     A1.CHDLM BETWEEN 20110505 +1 
        AND 20110506 -1 
    OR 
     A1.CHDLM = 20110506 
     AND A1.CHTLM <= '130000' 
    ) 
+0

이것은 내 하루를 구해주었습니다 ... 당신의 모든 도움에 감사드립니다. – jorame

+0

안녕하세요! 이 쿼리에 대한 문제가 있습니다. 더 큰 범위의 날짜를 변경하려고하면 작동하지 않습니다. – jorame

+0

@ 구역 : 이제 제대로 작동합니까? –

관련 문제