Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć deltę czasu wiersza datatime w mysql?

W MySQL jest to dość proste, ponieważ możesz użyć zmiennej do przechowywania czasu czujnika dla każdego wiersza, a następnie użyć go w następnym wierszu podczas obliczania różnicy czasu. Ta technika nie działa w MS SQL, ponieważ nie pozwala na przypisywanie zmiennych w SELECT, który również zwraca dane. Prawdopodobnie nie zadziała również w innych wersjach SQL. Zwykłą metodą byłoby utworzenie sprzężenia przesunięcia, przy czym sprzężenie zwraca wartości z poprzedniego wiersza, ale może to być dość powolne.

To powiedziawszy, oto jeden sposób na zrobienie tego w 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. gdzie w klauzuli mysql

  2. Paginacja za pomocą MySQL LIMIT, OFFSET

  3. MariaDB:Niestandardowy katalog danych:Zawsze musisz przechowywać katalog /var/lib/mysql

  4. Jak utworzyć bazę danych MySQL za pomocą interfejsu wiersza poleceń (CLI)

  5. Jak używać REGEXP z sekwencjami specjalnymi, takimi jak granica słowa?