Поиск, если дата в событии - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть таблица БД со списком событий например

starteventX = 2019-02-20 endeventX = 2019-03-15
starteventY = 2019-03-11 endeventY = 2019-05-28

Мне нужно знать, есть ли в этом году 2019 год и месяц 04, чтобы я мог подготовить ежемесячный отчет

Я пытался

$mainlink = mysqli_query($db,"SELECT * FROM eventi WHERE ((year1 >= '$year') OR (year2 <= '$year'))
        AND ((month1 >= '$month') OR (month2 <= '$month')) ") or merror($msg = mysqli_error($db));

но не могу получить необходимую информацию

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Как концепция (при условии, что данные действительны, т.е. конец какого-либо события всегда позже его начала):

  1. Если вы хотите, чтобы хотя бы один день данного месяца был всобытие:
SELECT * FROM e
WHERE e.startevent <= '2019-04-30' AND e.endevent >= '2019-04-01'
Если вы хотите, чтобы в событии был весь месяц:
SELECT * FROM e
WHERE e.startevent <= '2019-04-01' AND e.endevent >= '2019-04-30'
1 голос
/ 29 апреля 2019

Если вы хотите, чтобы временные интервалы перекрывались, то это примерно так:

SELECT e.*
FROM eventi e
WHERE e.startevent < '2019-05-01' AND -- starts before the end of the month
      e.endevent > '2019-04-01'       -- ends after the start of the month
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...