这个 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 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() https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff。不过要小心。该函数仅在时间戳相隔几天之内的秒级上正确工作;它毫无优雅地溢出(正如我痛苦地发现的那样)。
您可以尝试在插入时间戳时将时间戳截断为分钟。这会让你索引它们。