sql >> Database teknologi >  >> RDS >> Sqlserver

SQL - Operand-datatypen datetime2 er ugyldig for subtract-operator

Som nævnt i kommentarerne, kan du ikke trække tidsstempler fra med - operatør. Brug DATEDIFF funktion i stedet. For at få forskellen på den aktuelle række og den næste rækkes tidsstempler, skal du bruge OUTER APPLY .

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

Rediger:For at update en kolonne med navnet diff ifølge OP's kommentar,

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. kan jeg nulstille auto_increment-feltet i mySql?

  2. Tilføj backticks i oprettelse af tabel til mysql med csv-filen -PHP

  3. PostgreSQL:Auto-increment baseret på multi-kolonne unik begrænsning

  4. Postgresql opretter ikke db med "createdb" som superbruger, men udsender ikke fejl