Как показать события между начальной и конечной датой, выбрав любую дату между - PullRequest
0 голосов
/ 22 января 2019

Событие А происходит с 24 по 29 число месяца.Если пользователь выбирает любую дату после 24 и до 29. Существует ли способ показать событие A

Я использую этот запрос, если пользователь выбирает 25-е и 27-е.

Select * 
from Events 
where DateFrom >= '25-01-2019' and DateTo <= '27-01-2019'

Не будет отображатьсяСобытие А, потому что его дата начала и дата окончания отличаются.

Пример данных

 id  name             DateFrom           DateTo 
 1   Music eventA     2019-01-24       2019-01-29
 2   Music eventB     2019-01-25        2019-01-30

Если пользователь выбирает DateFrom '2019-01-26' и DateTo '2019-01-27', я хочу показать событие с id = 1 как 26 и 27лежит между 24 и 29

Ответы [ 3 ]

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

Пожалуйста, обновите ваш запрос, как показано ниже. Даты не указаны правильно в запросе.

Select * 
from Events 
where ( DateFrom >= '25-01-2019' and DateFrom <= '27-01-2019') and 
      ( DateTo >= '25-01-2019' and DateTo <= '27-01-2019' ).
0 голосов
/ 29 января 2019

Выбранная дата начала (2019-01-26) должна сравниваться с DateFrom данных, тогда как выбранная дата окончания (2019-01-27) должна сравниваться с DateTo, как указано в этом запросе

SELECT * 
FROM Events 
WHERE DateFrom <= '2019-01-26' 
AND DateTo >= '2019-01-27';

Используя следующие примеры данных, их правильная работа,

id  name                DateFrom    DateTo
1   Some other event    2018-12-12  2018-12-31
2   Music Event A       2019-01-24  2019-01-29
3   Music eventB        2019-01-25  2019-01-30
4   Event C             2019-02-01  2019-02-09

Запрос выше возвращает это,

id  name            DateFrom    DateTo
2   Music Event A   2019-01-24  2019-01-29
3   Music eventB    2019-01-25  2019-01-30

Надеюсь, это ответит на ваш вопрос!

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

Если вы хотите выбрать все события, которые «происходят» или «частично происходят» в выбранном вами диапазоне дат, вы можете сделать

Select * from Events 
where DateFrom <= '2019-01-27' and DateTo  >= '2019-01-25'

В случае, если вам нужны только те события, которые происходят в полном диапазоне указанных вами дат, вам нужно сделать

Select * from Events 
where DateFrom <= '2019-01-25' and DateTo  >= '2019-01-27'

Вместо использования формата строки '2019-01-25' вы также можете использовать числовой формат даты 20190125. Обе формы должны работать одинаково хорошо.

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