SQL查询日期范围

时间:2015-10-14 07:24:17

标签: sql oracle

我有下表:

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
  3. 在这两种情况下,我都想选择上面提到的列。这可能与SQL有关吗?我尝试了一些东西,但我没有得到第二个查询工作。我使用Oracle DB:

    用法示例: 我想查询ma datatable如下:显示15.01.1525.01.15之间的所有条目。这应该产生ID为11944

    的行

1 个答案:

答案 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')