Странный фильтр в предложении where - PullRequest
0 голосов
/ 15 января 2019

У меня есть следующие данные, и я не понимаю, как работает пункт where

CREATE TABLE ##TBL (ID  INT, StartDate DATE,    EndDate DATE)
 INSERT INTO ##TBL VALUES
 (1,'2018-01-01','2018-02-07'), (2,'2018-01-02','2018-09-17'),
 (3,'2018-01-03','2018-07-12'), (4,'2018-01-04','2018-07-03'),
 (5,'2018-01-05','2018-05-31'), (6,'2018-01-06','2018-07-28'),
 (7,'2018-01-07','2018-03-08'), (8,'2018-01-08','2018-08-05'),
 (9,'2018-01-09','2018-09-20'), (10,'2018-01-10','2018-08-14'),
 (11,'2018-01-11','2018-03-30'), (12,'2018-01-12','2018-03-02'),
 (13,'2018-01-13','2018-05-15'), (14,'2018-01-14','2018-03-14'),
 (15,'2018-01-15','2018-08-22'), (16,'2018-01-16','2018-04-09'),
 (17,'2018-01-17','2018-06-03'), (18,'2018-01-18','2018-09-30'),
 (19,'2018-01-19','2018-04-03'), (20,'2018-01-20','2018-02-14');

Когда я выполняю запрос, используя приведенный ниже код на основе параметра даты, я не понимаю результат

DECLARE @RportDate DATE 
      SET @RportDate='2018-01-04'
 SELECT* FROM ##TBL
 WHERE @RportDate BETWEEN StartDate AND EndDate
 DROP TABLE ##TBL

Например, если я использую дату «2018-01-04» для параметра У меня есть этот результат

ID  StartDate   EndDate
1   2018-01-01  2018-02-07
2   2018-01-02  2018-09-17
3   2018-01-03  2018-07-12
4   2018-01-04  2018-07-03

А если я поменяю дату на '2018-01-02' Выход будет

ID  StartDate   EndDate
1   2018-01-01  2018-02-07
2   2018-01-02  2018-09-17

Мой вопрос: фильтрует ли запрос только для startDate? Любое объяснение этого поведения

1 Ответ

0 голосов
/ 15 января 2019

Вы можете попробовать следующий запрос, он такой же, как ваш запрос, но написанный таким образом будет легче понять.

И это фильтрует StartDate и EndDate.

DECLARE @RportDate DATE 
SET @RportDate='2018-01-04'

SELECT * FROM ##TBL
WHERE StartDate <= @RportDate 
    AND EndDate >= @RportDate

DROP TABLE ##TBL

Вы можете найти живую демонстрацию Демонстрацию здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...