Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намеря времева делта на ред datatime в mysql?

В MySQL това е сравнително лесно, тъй като можете да използвате променлива за съхраняване на времето на сензора за всеки ред, след което да го използвате в следващия ред, когато изчислявате времевата разлика. Тази техника не работи в MS SQL, тъй като не позволява присвояването на променливи в SELECT, който също връща данни. Вероятно няма да работи и в други версии на SQL. Обичайният метод би бил да се създаде офсетно съединение, при което съединението връща стойности от предишния ред, но това може да бъде доста бавно.

Въпреки това, ето един начин да го направите в 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. Разделяне на таблица след X брой редове и добавяне на текст в цикъл While (с помощта на TCPDF)

  2. mysql замества текст в поле php

  3. AJAX актуализира MYSQL база данни, използвайки функция, извикана от HTML, генериран от PHP

  4. Стойност на настройка за една колона от всички записи в таблицата

  5. MySQL Съхранена процедура с параметри