Biểu thức MySql này sẽ trả lại cho bạn các giá trị DATETIME với số giây bị xóa.
CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
Hãy xem này. https:// dev .mysql.com / doc / refman / 8.0 / vi / date-and-time-functions.html # function_date-format . Vì vậy, bạn có thể kết thúc với một truy vấn như sau:
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...
Nhưng hãy cẩn thận. Dấu thời gian được tạo tự động giống như số dấu phẩy động; Khi hai người trong số họ trở mặt bằng nhau thì đó chỉ là may mắn. Cắt ngắn dấu thời gian của bạn đến từng phút có thể được, nhưng bạn cũng có thể tốt hơn nên trừ một dấu thời gian này cho một dấu thời gian khác và so sánh sự khác biệt (hoặc giá trị tuyệt đối của sự khác biệt).
Ngoài ra, phép nối này sẽ chậm vì nó phải chạy hàm cắt bớt thứ hai trên mọi giá trị, vì vậy nó không thể sử dụng bất kỳ chỉ mục nào.
Bạn có thể trừ một dấu thời gian này cho một dấu thời gian khác bằng TIMESTAMPDIFF()
. Nhưng hãy cẩn thận. Chức năng này chỉ hoạt động chính xác ở mức giây cho các dấu thời gian cách nhau vài ngày; nó tràn ra một cách vô hạn (như tôi đã phát hiện ra một cách vô cùng đau đớn).
Bạn có thể thử cắt ngắn các dấu thời gian thành phút tại thời điểm bạn chèn chúng. Điều đó sẽ cho phép bạn lập chỉ mục chúng.