Как правильно составить MySQL запрос с прибавлением времени?

130
03 марта 2022, 17:50

Есть таблица, в которой хранится время в формате "TIME". Есть другая таблица, в которой хранятся другие данные "TIME". Необходим запрос, который будет получать оттуда данные из первой таблицы, исключая данные из второй, при этом данные из второй таблицы должны браться с учетом сдвига в N-минут. Пытался сделать так,

$interval = date('H:i:s',strtotime('00:30')); $begin_time_data = $mysqli->query("SELECT time FROM times WHERE time NOT IN (SELECT ch_time FROM events)+$interval");

но получаю пустой результат

Answer 1

MySQL сам умеет вычислять интервалы времени с помощью конструкции interval. А вот складывать с непосредственными значениями (будь то секунды или строка времени, полученная date() в php), без использования interval тяжело. Кроме того сложение результата подзапроса со значением предполагает, что такой подзапрос должен вернуть только одну строку, что не сочетается с NOT IN, который ожидает множество строк. Подзапрос NOT IN должен вернуть уже готовые для использования данные, а следовательно сложение надо произвести прямо в нем.

SELECT time FROM times
 WHERE time NOT IN (SELECT ch_time + interval 30 minute FROM events)
READ ALSO
TWIG вывод значения массива, по ключу из переменной

TWIG вывод значения массива, по ключу из переменной

Существует многоуровневый массив

109
Как задать/установить дату когда закончится показ опубликованного поста

Как задать/установить дату когда закончится показ опубликованного поста

Суть происходящего: есть таблица в бд в которую записываются данные для публикации постав этой таблице есть 2 главных столбца - srart_public и finish_public

78
Ошибка 500 в подключении мобильной версии?

Ошибка 500 в подключении мобильной версии?

Подключаю отдельную мобильную версию из папки в корне сайта или на поддоменеИспользую этот плагин https://github

91
WP. Как удалить тег(метку) у товара?

WP. Как удалить тег(метку) у товара?

wp_set_object_terms(44723, 'Новинка', 'product_tag', true);

74