Този 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()
. Но внимавай. Тази функция работи правилно само на ниво секунди за времеви печати в рамките на няколко дни един от друг; прелива безизразно (както открих с голяма болка).
Можете да опитате да съкратите времевите марки до минути в момента, в който ги вмъквате. Това ще ви позволи да ги индексирате.