2015-10-14 289 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这两列的数据类型是什么? –