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

Откриване на пропуски над 30 минути в колоната с клеймо за време

Лесно решение с помощта на общ табличен израз. Сравнете с производителността на курсора, ако имате поне 1000 реда.

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. Разделете стойностите на колоната на низа

  2. SQL Server 2008 - HashBytes изчислена колона

  3. Проверете дали низът съдържа знаци с ударение в SQL?

  4. Вземете само дата от datetime sql, без да конвертирате във varchar, за да мога да го сортирам в excel

  5. Пропуснете някои колони в SqlBulkCopy