sql >> Databáze >  >> RDS >> Mysql

MySQL vybere DATETIME podobné až do minuty

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.



  1. Jak funguje YEARWEEK() v MariaDB

  2. MySQL – zobrazit všechny permutace?

  3. Průvodce funkcemi PubNub

  4. Jak používat dotaz mysqli pomocí samostatného souboru connection.php?