Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tìm đồng bằng thời gian của một hàng dữ liệu trong mysql?

Trong MySQL, điều này khá dễ dàng, vì bạn có thể sử dụng một biến để lưu trữ thời gian cảm biến cho mỗi hàng, sau đó sử dụng biến đó ở hàng tiếp theo khi tính toán chênh lệch thời gian. Kỹ thuật này không hoạt động trong MS SQL vì nó không cho phép các biến được gán trong một SELECT cũng đang trả về dữ liệu. Nó có thể sẽ không hoạt động trong các phiên bản SQL khác. Phương pháp thông thường sẽ là tạo một phép nối bù, theo đó phép nối trả về các giá trị từ hàng trước đó, nhưng điều này có thể khá chậm.

Điều đó nói rằng, đây là một cách để làm điều đó trong MySQL:

SELECT 
    sensor_time,
    time_diff,
    TIME_TO_SEC(time_diff) > 30 AS alarm
FROM (
    SELECT
        sensor_time,
        TIMEDIFF(sensor_time, @prev_sensor_time) AS time_diff,
        @prev_sensor_time := sensor_time AS prev_sensor_time
    FROM sensor_table,
    (SELECT @prev_sensor_time := NULL) AS vars
    ORDER BY sensor_time ASC
) AS tmp;

+---------------------+-----------+-------+
| sensor_time         | time_diff | alarm |
+---------------------+-----------+-------+
| 2009-09-28 07:08:12 | NULL      |  NULL |
| 2009-09-28 07:08:40 | 00:00:28  |     0 |
| 2009-09-28 07:09:10 | 00:00:30  |     0 |
| 2009-09-28 07:09:40 | 00:00:30  |     0 |
| 2009-09-28 07:10:10 | 00:00:30  |     0 |
| 2009-09-28 07:10:40 | 00:00:30  |     0 |
| 2009-09-28 07:41:10 | 00:30:30  |     1 |
| 2009-09-28 07:41:40 | 00:00:30  |     0 |
| 2009-09-28 07:42:10 | 00:00:30  |     0 |
| 2009-09-28 07:42:40 | 00:00:30  |     0 |
+---------------------+-----------+-------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter Datamapper ORM có hỗ trợ câu lệnh MySQL CASE trong mệnh đề ORDER BY không?

  2. MySQL InnoDB khóa chết khi CHỌN với khóa độc quyền (CHO CẬP NHẬT)

  3. xóa dữ liệu trùng lặp mysql

  4. Theo dõi bảng MySQL để biết các thay đổi trong chương trình C #?

  5. So sánh thời gian chuyển đổi dự phòng proxy cơ sở dữ liệu - ProxySQL, MaxScale và HAProxy