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

SQL - Типът данни на операнд datetime2 е невалиден за оператор за изваждане

Както бе споменато в коментарите, не можете да изваждате времеви клейма с - оператор. Използвайте DATEDIFF функция вместо това. За да получите разликата между времевите клейма на текущия ред и на следващия ред, използвайте 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

Редактиране:За update колона с име diff според коментара на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:комбиниране на няколко реда в един ред

  2. SQL Server:XPATH заявката е неуспешна

  3. Актуализирайте множество колони в SQL

  4. Защо Asp.net MVC4 не може да използва без бисквитки на хранилището на състоянието на SQL Server Session

  5. Типът данни „ПАРИ“ на SQL Server е десетична плаваща запетая или двоична плаваща запетая?