如何将日期与日期范围进行比较

时间:2011-07-30 18:11:28

标签: java sql-server sql-server-2008

我想计算总数和GROUP BY CarID,但目前无法执行此操作。

在我的数据库中有一些表:TBL_CAR_TX,TBL_CAR,TBL_PERSON

table: TBL_CAR_TX
------------------
select * from TBL_CAR_TX
where TranDate >= '2011-06-09' and Trandate <= '2011-06-20'

    TranID, AccID, CarID, TranDate, Type, Quantity, .....
    --------------------------------------------------------
    0      2563    BMW    2011-06-09   H    -15 (1)
    1      2563    BMW    2011-06-20   R     15
    2      2563    BMW    2011-06-20   H     20
    3      0055    TOY    2011-06-12   H    -10 (2)
    4      0055    TOY    2011-06-20   R     10

...

(H):Hold,(R):释放
如果我们改变WHERE stmt的条件:

select * from TBL_CAR_TX where TranDate >= '2011-06-10' and Trandate <= '2011-06-19'  

(这些日期,我从外面得到它们) ==&GT;所有记录都消失==&gt;我无法计算,因为数据不显示。

看看表TBL_CAR_TX,我们可以看到一个人从'2011-06-09'借用汽车'宝马'直到'2011-06-20'他退回了它。那么,如果我在SQL Server 2008中,我如何保留记录(1)&amp; (2)在范围日期从'2011-06-10'到'2011-06-19'来计算。如果不能,我怎么能在java编程中做到这一点?任何建议。

table TBL_CAR:

    MarketID, CarID, Name, Size, ...
    ---------------------------
    GER       BMW    ....
    JPA       TOY    ....

Table TBL_PERSON:

    AccID, Name, Age, DOB, ...
    -------------------------
    2563   Robert
    0055   Mike

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

  

我想计算总数和GROUP BY CarID,但目前无法执行此操作。   那么,如果我在SQL Server 2008中,我如何保留记录(1)&amp; (2)in   范围从“2011-06-10”到“2011-06-19”计算。

从SQL中删除=

select CarID, SUM(QUANTITY) from TBL_CAR_TX where TranDate > '2011-06-09' and Trandate < '2011-06-20' GROUP BY CarID

或使用BETWEEN SQL CLAUSE。

select CarID, SUM(QUANTITY) from TBL_CAR_TX where TranDate BETWEEN '2011-06-10' AND '2011-06-19' GROUP BY CarID
  

如果不能,我怎么能在java编程中做到这一点?

您绝对可以过滤掉java中的数据,但是当SQL可以为您完成工作时,没有必要这样做。除非它是一个巨大的性能损失,否则几乎总是值得在SQL中进行这样的处理。