获取两个日期列之间的数据

时间:2013-09-25 14:13:24

标签: java php mysql sql oracle

表格

pmComm      validFrom   validTo
6.00        2011-11-01  2012-01-24
6.00        2012-01-09  2013-06-30
9.00        2012-01-25  2012-03-31
8.00        2012-04-01  2012-08-31
5.00        2013-07-01  2013-09-30
7.50        2013-10-01  2013-12-31
15.00       2014-01-01  2035-12-31

我有一张桌子,当我在'2013-12-15'到2031-05-15之间搜索数据时,我想要这样的结果:

结果:

pmComm      validFrom   validTo
7.50        2013-12-15  2013-12-31
15.00       2014-01-01  2031-05-15

什么应该是SQL查询来获取范围数据之间的期望结果?

4 个答案:

答案 0 :(得分:1)

你必须在我相信的条件之间使用,你可以在这里找到更多。 http://www.techonthenet.com/sql/between.php

查询可能看起来像这样

SELECT pmComm, validFrom, validTo
FROM YOUR_TABLE
WHERE (validFrom BETWEEN '2013-12-15' AND '2031-05-15') AND (validTo BETWEEN '2013-12-15' AND '2031-05-15');

答案 1 :(得分:1)

validFrom不在validFrom范围内时,以下内容会将较低的日期范围限制输出为validTo

同样,当validTo在范围内但validFrom不在范围内时,它会将上限日期范围限制为validTo

SELECT
  pmComm,

  CASE
    WHEN validFrom < '2013-12-15' THEN '2013-12-15'
    ELSE validFrom
  END AS validFrom,

  CASE
    WHEN validTo > '2031-05-15' THEN '2031-05-15'
    ELSE validTo
  END AS validTo


FROM Table


WHERE (validfrom BETWEEN '2013-12-15' AND '2031-05-15'
   OR  validto   BETWEEN '2013-12-15' AND '2031-05-15')

答案 2 :(得分:0)

我不完全确定你想要达到的目标,但是

SELECT * FROM table WHERE validFrom >= '2013-12-15' AND validTo <= '2031-05-15'

可能会完成这项工作。

答案 3 :(得分:0)

SELECT *
FROM Table
WHERE validTo BETWEEN '2013-12-15' AND '2031-05-15'