Dette MySql-udtryk vil give dig DATETIME-værdier tilbage med sekunderne nulstillet.
CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
Tag et kig på dette. https://dev .mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format . Så du kan ende med en forespørgsel som denne:
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...
Men vær forsigtig. Autogenererede tidsstempler er lidt ligesom flydende kommatal; når to af dem dukker op lige med hinanden, er det bare held. At afkorte dine tidsstempler til minutter kan være OK, men du kan også være bedre stillet ved at trække et tidsstempel fra et andet og sammenligne forskellene (eller de absolutte værdier af forskellene).
Denne join vil også være langsom, fordi den skal køre den anden trunkeringsfunktion på hver værdi, så den kan ikke bruge nogen indekser.
Du kan trække et tidsstempel fra et andet med TIMESTAMPDIFF()
. Men vær forsigtig. Denne funktion fungerer kun korrekt på niveauet sekunder for tidsstempler inden for et par dage efter hinanden; det flyder nådeløst over (som jeg opdagede med stor smerte).
Du kan prøve at afkorte tidsstemplerne til minutter på det tidspunkt, du indsætter dem. Det ville lade dig indeksere dem.