2011-05-06 47 views
2

我有一個查詢,我需要從兩個不同的日期和時間獲取信息。
我想拉上昨天和今天之間以及昨天和晚上18: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尼斯命名約定...... – 2011-05-06 21:18:31

+1

「遺產」與列名一樣,只有六個字母。 – 2011-05-06 21:22:56

+0

如何能同時使用'> = 16'和'<= 13'? – 2011-05-06 21:23:41

回答

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 2011-05-06 21:44:42

+0

你好!我在這個查詢中遇到問題。當嘗試更改更大範圍的日期時,它不起作用 – jorame 2011-05-12 19:04:24

+0

@jorame:現在工作正常嗎? – 2011-05-15 10:58:54