表:
pm通信有效从有效到6.00 2011-11-01 2012-01-246.00 2012-01-09 2013-06-309.00 2012-01-25 2012-03-318.00 2012-04-01 2012-08-315.00 2013-07-01 2013-09-307.50 2013-10-01 2013-12-3115.00 2014-01-01 2035-12-31
我有一个表,当我在"2013-12-15"到 2031-05-15 之间搜索数据时,我想要这样的结果:
结果:
pm通信有效从有效到7.50 2013-12-15 2013-12-3115.00 2014-01-01 2031-05-15
应该用什么SQL查询来获得范围数据之间的期望结果?
当validFrom
不在范围内但validTo
不在范围内时,以下内容将输出日期范围下限validFrom
。
同样,当validFrom
在该范围内但validTo
不在范围内时,它将输出日期范围上限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')
我相信你必须在条件之间使用,你可以在这里找到更多。 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');
我不
完全确定您要实现的目标,但是
SELECT * FROM table WHERE validFrom >= '2013-12-15' AND validTo <= '2031-05-15'
可能会完成这项工作。
SELECT *
FROM Table
WHERE validTo BETWEEN '2013-12-15' AND '2031-05-15'