Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Deteksi celah lebih dari 30 menit di kolom stempel waktu

Solusi mudah menggunakan ekspresi tabel umum. Bandingkan dengan kinerja kursor jika Anda memiliki setidaknya 1000 baris.

create table #tmp (Dt datetime)

insert into #tmp values 
('2015-07-15 15:01:21'),
('2015-07-15 15:17:44'), 
('2015-07-15 15:17:53'), 
('2015-07-15 15:18:34'), 
('2015-07-15 15:21:41'), 
('2015-07-15 15:58:12'), 
('2015-07-15 15:59:12'), 
('2015-07-15 16:05:12'),
('2015-07-15 17:02:12')

;with tbl as (
select dt, row_number() over(order by dt) rn
from #tmp
)
select t1.dt [from],t2.dt [to], datediff(minute,t1.dt,t2.dt) gap
from tbl t1 
inner join tbl t2 on t1.rn+1 = t2.rn
where datediff(minute,t1.dt,t2.dt) >30


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dapatkan bagian tanggal hanya dari nilai datetime menggunakan kerangka entitas

  2. Loop on table (Tanpa menggunakan kursor) untuk menggabungkan data

  3. Buat daftar dinamis nilai pernyataan INSERT

  4. Mengatasi SQL Server Database Terjebak dalam Masalah Mode Tersangka Secara Efisien

  5. Pulihkan hanya data dengan SQL Server 2008