簡體   English   中英

如何比較日期和日期范圍

[英]How to compare date with a date range

我想計算“數量總計”和“ 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):保持,(R):釋放
如果我們更改WHERE stmt的條件:

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

(這些日期,我從外面得到)==>所有記錄都消失了==>由於數據不顯示,我無法計算。

看一下表TBL_CAR_TX,我們可以看到一個人從“ 2011-06-09”借車“ BMW”,直到“ 2011-06-20”他都歸還了它。 因此,如果我在SQL Server 2008中這樣做,如何將記錄(1)和(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

非常感謝您的幫助

我想計算“數量總計”和“ GROUP BY CarID”,但目前無法執行此操作。 因此,如果我在SQL Server 2008中這樣做,如何將記錄(1)和(2)保留在從'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子句。

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中幾乎總是值得進行這樣的處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM