У меня есть столбцы:
date = "2017-12-10" (тип = дата)
time = "14:10:00" (тип = время)
duration = "40" (type = varchar 100)
Например, сегодня дата "2017-12-10", а сегодня время "14:30". Как я могу получить записи только для текущего времени и только в промежутке времени "40 минут"? Таким образом, принятый временной диапазон будет "14: 10: 00-14: 50: 00".
Я пробовал что-то вроде этого:
SELECT date, time, duration FROM events WHERE date = CURDATE() AND time >= CURTIME();
Но он не выполняет поиск за 40 минут.
Спасибо.
этот?
SELECT date, time, duration FROM events WHERE date = CURDATE() AND time between date_add(CURTIME(), interval -duration minutes) and CURTIME();
Я думал, что для вашей проблемы требуется + / - (продолжительность/2)
select
date_sub(CONCAT(dt, " ", tim), interval ( cast(duration as unsigned) / 2 ) minute) st
, date_add(CONCAT(dt, " ", tim), interval ( cast(duration as unsigned) / 2 ) minute) fin
, d.*
from (
select curdate() as dt, cast('14:10:00' as time) as tim, '40' as duration union all
select curdate() as dt, cast('14:10:00' as time) as tim, '60' as duration union all
select curdate() as dt, cast('14:10:00' as time) as tim, '90' as duration
) d
where
CONCAT(dt, " ", tim) between date_sub(CONCAT(dt, " ", tim), interval ( cast(duration as unsigned) / 2 ) minute)
and date_add(CONCAT(dt, " ", tim), interval ( cast(duration as unsigned) / 2 ) minute)