Tento výraz MySql vám vrátí hodnoty DATETIME s vynulovanými sekundami.
CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
Podívej se na to. https://dev .mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format . Takže můžete skončit s dotazem jako je tento:
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...
Ale buď opatrný. Automaticky generovaná časová razítka jsou něco jako čísla s pohyblivou řádovou čárkou; když se dva z nich vyrovnají, je to jen štěstí. Zkrácení časových razítek na minutu může být v pořádku, ale může být také lepší odečíst jedno časové razítko od druhého a porovnat rozdíly (nebo absolutní hodnoty rozdílů).
Toto spojení bude také pomalé, protože musí pro každou hodnotu spustit funkci druhého zkrácení, takže nemůže používat žádné indexy.
Jedno časové razítko můžete odečíst od druhého pomocí TIMESTAMPDIFF()
. Ale buď opatrný. Tato funkce funguje správně pouze na úrovni sekund u časových razítek v rozmezí několika dnů od sebe; neladně přetéká (jak jsem zjistil s velkou bolestí).
Můžete zkusit zkrátit časová razítka na minuty v době, kdy je vkládáte. To vám umožní indexovat je.