我有一张表(例如 tableA ),如下所示:
| Name | Startdate | Enddate | |---------------------------------| | a | 2012-07-01 | 2013-06-30 | | b | 2011-05-01 | 2012-04-30 | | c | 2010-01-01 | 2013-12-31 | | d | 2013-01-01 | 2014-12-31 | | e | 2011-07-01 | 2012-06-30 |
我想从2012-05-01
和2012-10-31
之间活跃的表格中获取名称。从上表中,结果应为 a,c和e 。
我所做的如下:
SELECT Name FROM tableA WHERE startdate<='2012-05-01' AND enddate>='2012-10-31'
但我得不到正确的结果。
答案 0 :(得分:5)
declare @T table
(
Name char(1),
Startdate datetime,
Enddate datetime
)
insert into @T values
('a', '20120701', '20130630'),
('b', '20110501', '20120430'),
('c', '20100101', '20131231'),
('d', '20130101', '20141231'),
('e', '20110701', '20120630')
declare @StartDate datetime = '20120501'
declare @EndDate datetime = '20121031'
select Name
from @T
where Startdate < @EndDate and
Enddate > @StartDate
答案 1 :(得分:1)
比较运算符的位置正在创建问题检查
SELECT Name FROM tableA WHERE startdate>='2012-05-01' AND enddate<='2012-10-31'
答案 2 :(得分:0)
如果您想要查找在此期间发生的任何结果,请使用BETWEEN:
SELECT Name FROM tableA WHERE startdate BETWEEN '2012-05-01' and '2012-10-31'
如果test_expression的值大于,则BETWEEN返回TRUE 或者等于begin_expression的值并且小于或等于 end_expression的值。
如果test_expression的值小于,则
NOT BETWEEN返回TRUE begin_expression的值或大于的值 end_expression具有