2013-04-02 29 views
0

我使用SQL加入日期範圍的幫助,請

Select Customer.QuoteID, Quote.QuoteID 
    From Customer, Quote 
    Where Customer.QuoteID=Quote.QuoteID 
Order By Quote.QuoteID 

我想,然後指定日期範圍(Quote.CreationDate),或至少在顯示日期比31/03/2013更大,但我不知道如何添加這個?

我希望能在Delphi中使用一個對話框來選擇最終的日期範圍...

+3

什麼這個問題有[德爾福]辦? – OnTheFly

回答

2

您只需添加這些where子句:

Select Customer.QuoteID, Quote.QuoteID 
From Customer, Quote 
Where Customer.QuoteID=Quote.QuoteID 
    And Quote.CreationDate > '2013-03-31' 
Order By Quote.QuoteID 

這與標準ANSI連接語法,這通常是優選的,並且我覺得有點容易在這種情況下閱讀:

Select Customer.QuoteID, Quote.QuoteID 
From Customer 
Inner Join Quote On Customer.QuoteID = Quote.QuoteID 
Where Quote.CreationDate > '2013-03-31' 
Order By Quote.QuoteID 

或者,如果你正在尋找兩個日期之間的範圍:

Select Customer.QuoteID, Quote.QuoteID 
From Customer 
Inner Join Quote On Customer.QuoteID = Quote.QuoteID 
Where Quote.CreationDate >= '2013-03-31' 
    AND Quote.CreationDate <= '2013-04-02' 
Order By Quote.QuoteID 

最後,在某些RDBMS平臺上,您也可以使用BETWEEN operator,但我最後一個示例中的語法將始終有效。

+0

Thankyou真的很有幫助。我從來沒有猜到日期格式! – WindowMan

+1

這就是[ISO日期格式](http://en.wikipedia.org/wiki/ISO_8601)。根據你的RDBMS,也可能有其他的支持,但這應該是相當普遍的。 –

+3

@AdamTucker如果您在查詢中使用了參數,則格式無關緊要(假設您使用的是Delphi的標籤)。您可以對大多數數據庫組件集使用本機數據類型。 – Harriv

6

要按日期範圍限制,你可以這樣做以下:

Select Customer.QuoteID, Quote.QuoteID 
From Customer, Quote 
Where Customer.QuoteID = Quote.QuoteID 
    and Quote.CreationDate between :date_from and :date_to 
Order By Quote.QuoteID 

其中:date_from:date_to是你的日期參數

+4

+1表示參數的使用 – jachguate