2015-10-14 316 views
-2

我有如下表:SQL查詢日期範圍

ID  DATE_START DATE_END 
------- ---------- -------- 
11944 10.01.15 20.01.15 

我想選擇行基於一個日期範圍,例如

  1. 01.01.15 - 25.01.15
  2. 15.01.15 - 25.01.15

在這兩種情況下,我想選擇上面提到的列。這可能與SQL?我試了幾件事,但我沒有得到第二個查詢工作。我使用Oracle數據庫:

示例用法: 我想查詢ma數據表如下所示:Show me all 15.01.1525.01.15之間的所有條目。這應該屈服於行ID 11944

+0

你的意思是這樣嗎? http://stackoverflow.com/questions/33117593/how-to-fetch-data-from-database-using-two-different-date-in-php – nameless

+0

@StanislovasKalašnikovas它取決於他的語言環境配置。作爲一個例子,巴西日期格式非常好。 –

+0

什麼數據類型是你的「日期」列?而當你說你無法使查詢工作時,如果你可以發佈實際的查詢,並描述你期望它做什麼以及發生了什麼,那真的很有幫助。 –

回答

2

如果兩個時間段重疊,假設兩列都定義爲DATE,您希望返回一行。

select * 
from tab 
where DATE_START <= DATE '2015-01-25' -- end of searched period 
    and DATE_END >= DATE '2015-01-15' -- begin of searched period 

在標準SQL有一個OVERLAPS斷言這不是(正式)Oracle支持:

where (DATE_START, DATE_END) OVERLAPS (DATE '2015-01-15', DATE '2015-01-25') 
+0

如果我將搜索範圍設置爲2012-01-01 - 2020-01-01 – matthias

+0

,那麼您的聲明將無法使用。當然,它會重複檢查您的查詢:'Start1 <= End2和End1> = Start2' – dnoeth

+0

@matthias這兩列的數據類型是什麼? –