Sql Server - получить даты из базы данных между предоставленным диапазоном - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть проблема с получением записей, если FtableID в любой точке диапазона (Дата начала и Дата окончания) имеет StatusID = 2.

Моя таблица Структура

ID FTableID StatusID AddedOn 75324 53591 1 2019-03-17 06:48:14.490 75325 53591 2 2019-03-18 06:48:14.663 75326 53591 3 2019-03-19 06:54:20.830

@StartDate Datetime='2019/03/17 23:00:00' ,            
@EndDate Datetime='2019/03/20 23:59:59' 

Select ID, FTableID,StatusID,AddedOn from MyTableName where FTableID=53591
And StatusID=2 and AddedOn <= @EndDate 

Я знаю, что мой запрос неверен, и он выдает запись, даже когда я передаю @startdate после того, как его статус меняется на 3 ( Завершено )

Я не могу установить фильтр даты начала.

Мне нужно проверить, находится ли эта запись FtableID в статусе id = 2 в любой точке указанного диапазона

Запись должна прийти, если я передам @StartDate Datetime = '2019/03/18 23:00:00', @EndDate Datetime = '2019/03/20 23:59:59', потому что она находится в этом диапазоне это было в статусе = 2

Запись не должна прийти. Если я передам @StartDate Datetime = '2019/03/19 23:00:00', @EndDate Datetime = '2019/03/20 23:59:59', поскольку она была преобразована в StatusId = 3

Пожалуйста, предложите мне это. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Один метод использует exists.

Я бы также упростил вашу арифметику дат:

объявлять @StartDate datetime '2019-03-17 23:00:00'; объявлять @EndDate datetime = '2019-03-20'

select t.*
from mytablename t
where exists (select 1
              from mytablename t2
              where t2.ftableid = t.ftableid and
                    t2.statusid = 2 and
                    t2.AddedOn >= @StartDate and
                    t2.AddedOn < @EndDate 
             );
0 голосов
/ 16 апреля 2019

используйте это

select * 
from YourTableName
where AddedOn between (@StartDate and @EndDate)
and StatusID=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...