sql >> Database >  >> RDS >> Sqlserver

SQL - Operand-gegevenstype datetime2 is ongeldig voor de operator voor aftrekken

Zoals vermeld in de opmerkingen, kunt u geen tijdstempels aftrekken met - exploitant. Gebruik DATEDIFF functie in plaats daarvan. Gebruik OUTER APPLY om het verschil tussen de huidige rij en de tijdstempels van de volgende rij te krijgen. .

select t2._number,t2._timestamp, 
datediff(microsecond,t2._timestamp,t1._timestamp) as diff
from dbo.tbl t2
outer apply (select t1._timestamp 
             from dbo.tcp t1
             where t1._number = t2._number + 1) t1

Bewerken:om update een kolom met de naam diff volgens de opmerking van de OP,

with cte as (          
select t2._number,t2._timestamp, t2.diff,
datediff(microsecond,t2._timestamp,t1._timestamp) as diff_col
from t t2
outer apply (select t1._timestamp 
             from t t1
             where t1._number = t2._number + 1) t1
   )
update cte set diff=diff_col;


  1. Hoe werken transacties met PHP PDO precies met concurrency?

  2. SELECT / GROUP BY - volgorde van een waarde

  3. Hoe fout op te lossen:MySQL wordt onverwacht afgesloten op Xampp vanwege plug-in 'Aria'

  4. Een databasemodel voor een online-enquête. Deel 3