对于startdate和enddate的SQL查询混淆

him*_*056 4 sql sql-server select select-query

我有一个像这样的表(例如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 |

我想从桌子上得到一个活跃于和之间的名字.从上表中,结果应该是a,c和e.2012-05-012012-10-31

我所做的如下:

SELECT Name FROM tableA WHERE startdate<='2012-05-01' AND enddate>='2012-10-31'
Run Code Online (Sandbox Code Playgroud)

但我得不到正确的结果.

Mik*_*son 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
Run Code Online (Sandbox Code Playgroud)