2011-05-06 93 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