Mysql выбор даты из рассчитанного интервала - PullRequest
0 голосов
/ 30 января 2020

Есть таблица concerts, которая содержит поля start_date в формате: 2019-06-08 10:00:00 и поле duration - продолжительность в минутах. Мне нужно найти концерты, которые пересекаются с особой датой. Я использую:

SELECT 
     id, duration, start_date, 
     DATE_ADD(date, INTERVAL + duration MINUTE) as end_date 
FROM 
     concerts 
WHERE 
     start_date <= '2019-06-08 10:00:00' 
     and end_date >= '2019-06-08 10:00:00' 

Я могу рассчитать end_date, но тогда я не могу использовать его внутри where блока, только внутри having. Как я могу использовать выражение OR с where и having? Я обнаружил, что могу использовать все условия внутри блока having, но это плохо сказывается на производительности. Любые предложения?

PS Еще один, если я могу использовать where ИЛИ having внутри одного запроса, или как я могу заменить его

1 Ответ

2 голосов
/ 30 января 2020

Вы не можете получить доступ к столбцу, объявленному в предложении select в предложении where. Вместо этого вы можете повторить выражение.

Но на самом деле, я думаю, что это делает то, что вы хотите, ie проверяет, какие концерты происходили в определенный c момент времени:

SELECT 
    id, 
    duration, 
    start_date, 
    start_date + interval duration minute as end_date 
FROM concerts 
WHERE '2019-06-08 10:00:00' between start_date and start_date + interval duration minute
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...