Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana menemukan delta waktu dari baris datatime di mysql?

Di MySQL, ini cukup mudah, karena Anda dapat menggunakan variabel untuk menyimpan waktu sensor untuk setiap baris, kemudian menggunakannya di baris berikutnya saat menghitung perbedaan waktu. Teknik ini tidak berfungsi di MS SQL karena tidak mengizinkan variabel untuk ditetapkan dalam SELECT yang juga mengembalikan data. Mungkin juga tidak akan berfungsi di versi SQL lainnya. Metode yang biasa digunakan adalah menghasilkan gabungan offset, di mana gabungan mengembalikan nilai dari baris sebelumnya, tetapi ini bisa sangat lambat.

Yang mengatakan, inilah salah satu cara untuk melakukannya di 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. Tidak dapat memilih entitas melalui variabel identifikasi di repositori

  2. Fungsi peringkat di MySQL

  3. Urutan default MySQL tergantung pada WHERE

  4. Apakah ini metode yang aman untuk memasukkan data formulir ke dalam database MySQL?

  5. Mengatasi 61 tabel JOIN limit di MySQL dengan membuat subquery di dalam satu sama lain