-1

桌子:

pmComm 有效从有效到
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 有效从有效到
7.50 2013-12-15 2013-12-31
15.00 2014-01-01 2031-05-15

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

4

4 回答 4

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');
于 2013-09-25T14:18:03.833 回答
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')
于 2013-09-25T14:24:47.167 回答
0

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

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

可能会完成这项工作。

于 2013-09-25T14:18:46.867 回答
0
SELECT *
FROM Table
WHERE validTo BETWEEN '2013-12-15' AND '2031-05-15'
于 2013-09-25T14:26:56.610 回答