Deze MySql-expressie geeft je DATETIME-waarden terug met de seconden op nul.
CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
Kijk hier eens even naar. https://dev .mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format . Dus je zou kunnen eindigen met een vraag als deze:
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...
Maar pas op. Automatisch gegenereerde tijdstempels zijn een beetje zoals getallen met drijvende komma; wanneer twee van hen gelijk aan elkaar verschijnen, is het gewoon geluk. Het afkappen van uw tijdstempels tot op de minuut kan OK zijn, maar u kunt ook beter de ene tijdstempel van de andere aftrekken en de verschillen (of de absolute waarden van de verschillen) vergelijken.
Deze join zal ook traag zijn omdat het de tweede-afkortfunctie op elke waarde moet uitvoeren, dus het kan geen indexen gebruiken.
Je kunt de ene tijdstempel van de andere aftrekken met TIMESTAMPDIFF()
. Maar pas op. Deze functie werkt alleen correct op het niveau van seconden voor tijdstempels binnen een paar dagen na elkaar; het stroomt gracieus over (zoals ik met veel pijn ontdekte).
U kunt proberen de tijdstempels in minuten in te korten op het moment dat u ze invoegt. Zo kun je ze indexeren.