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

Mysql Hitung perbedaan waktu antara cap waktu di bidang yang sama?

Anda dapat bergabung sendiri dengan tabel, sesuatu seperti ini berfungsi dalam kasus Anda:

SELECT 
*
FROM
yourTable a
INNER JOIN yourTable b ON a.ID = b.ID + 1
WHERE TIMESTAMPDIFF(second, a.timestamp, b.timestamp) > 60

Tapi ini bisa menjadi jelek ketika Anda memiliki celah di kolom ID Anda. Dan terutama itu bisa menjadi jelek (dalam hal kinerja (ketika Anda tidak memiliki indeks yang bagus di atas meja)) ketika Anda memiliki *banyak data.

Jadi, saya sarankan menggunakan kueri yang sedikit lebih maju menggunakan variabel. Tanpa perlu menggabungkan tabel ke tabel itu sendiri, ini biasanya berjalan cukup cepat:

SELECT * FROM (
SELECT
yt.*,
TIMESTAMPDIFF(second, @prevTS, `timestamp`) AS timedifference,
@prevTS:=yt.`timestamp`
FROM
yourTable yt
, (SELECT @prevTS:=(SELECT MIN(`timestamp`) FROM yourTable)) vars
ORDER BY ID
)subquery_alias
WHERE timedifference > 65

Untuk lebih meningkatkan kueri ini untuk menampilkan dua baris di mana perbedaan waktu terlalu besar seharusnya tidak menjadi masalah :) Ketika Anda mendapat masalah serius, jangan ragu untuk bertanya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menetapkan nilai parameter yang sama beberapa kali dalam pdo execute

  2. Bagaimana cara mengetahui set karakter server default di mysql?

  3. Menyebarkan Situs Web ASP.NET di Server Linux

  4. Penyortiran bersyarat di MySQL?

  5. Menggunakan fungsi hitung untuk menentukan apa yang ditampilkan dalam pernyataan if