sql >> Database teknologi >  >> RDS >> Mysql

find fortløbende transaktion inden for 10 minutter

Baseret på formatet på dine datoer i tabellen skal du konvertere dem ved hjælp af STR_TO_DATE at bruge dem i en forespørgsel. Hvis din kolonne er faktisk en datetime type, og det er kun din visningskode, der udskriver det format, skal du bare erstatte STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') i denne forespørgsel med xxx .

Måden at finde ordrer inden for 10 minutter efter hinanden er ved selv at deltage i dit bord på user_id , order_id og tiden på den anden ordre er inden for tiden for den første ordre og 10 minutter senere:

SELECT t1.user_id, t1.create_time AS order1_time, t2.create_time AS order2_time
FROM transactions t1
JOIN transactions t2 ON t2.user_id = t1.user_id
                    AND t2.order_id != t1.order_id
                    AND STR_TO_DATE(t2.create_time, '%m/%d/%Y %k:%i') BETWEEN
                           STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') 
                       AND STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') + INTERVAL 10 MINUTE

Output:

user_id     order1_time     order2_time
101         4/2/2018 8:34   4/2/2018 8:37
103         4/2/2018 9:32   4/2/2018 9:36
106         4/2/2018 13:11  4/2/2018 13:18

Demo på dbfiddle



  1. MYSQL-sammenligning ved tilslutningsproblem

  2. 5 Fejl i databasedesign, der skal undgås

  3. Har sammensat indeks retning i MySQL?

  4. Hvordan får mysql til at starte automatisk? (kun linux-cli)