Dựa trên định dạng ngày của bạn trong bảng, bạn sẽ cần chuyển đổi chúng bằng cách sử dụng STR_TO_DATE
để sử dụng chúng trong một truy vấn. Nếu cột của bạn là thực sự là một datetime
nhập và đó chỉ là mã hiển thị của bạn xuất ra định dạng đó, chỉ cần thay thế STR_TO_DATE(xxx, '%m/%d/%Y %k:%i')
trong truy vấn này với xxx
.
Cách để tìm đơn hàng trong vòng 10 phút cách nhau là tự tham gia vào bàn của bạn trên user_id
, order_id
và thời gian của đơn đặt hàng thứ hai trong khoảng thời gian của đơn đặt hàng đầu tiên và 10 phút sau:
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
Đầu ra:
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