Это выражение MySql вернет вам значения DATETIME с обнуленными секундами.
CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
Взгляни на это. https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format. Таким образом, вы можете получить такой запрос:
SELECT Table1.TimeSTamp1, Table1.Param1, Table2.TimeStamp2, Table2.Param2
FROM Table1
JOIN Table2 ON CONVERT(DATE_FORMAT(Table1.TimeStamp1,'%Y-%m-%d-%H:%i:00'),DATETIME)
= CONVERT(DATE_FORMAT(Table2.TimeStamp2,'%Y-%m-%d-%H:%i:00'),DATETIME)
WHERE ... conditions for the other parameters of Table1 and Table2...
Но будьте осторожны. Автоматически сгенерированные временные метки похожи на числа с плавающей точкой; когда двое из них оказываются равными друг другу, это просто удача. Усечение ваших временных отметок до минуты может быть нормальным, но вам также может быть лучше вычесть одну временную отметку из другой и сравнить различия (или абсолютные значения разностей).
Кроме того, это соединение будет медленным, потому что оно должно запускать функцию второго усечения для каждого значения, поэтому оно не может использовать какие-либо индексы.
Вы можете вычесть одну временную метку из другой с помощью TIMESTAMPDIFF()
. Но будь осторожен. Эта функция корректно работает только на уровне секунд для отметок времени в течение нескольких дней друг от друга; оно изящно переполняется (как я обнаружил с большой болью).
Вы можете попытаться урезать метки времени до минут, когда вы их вставляете. Это позволило бы вам проиндексировать их.