Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL - Toán hạng dữ liệu kiểu datetime2 không hợp lệ cho toán tử trừ

Như đã đề cập trong các nhận xét, bạn không thể trừ dấu thời gian bằng - nhà điều hành. Sử dụng DATEDIFF Thay vào đó, để nhận được sự khác biệt của hàng hiện tại và dấu thời gian của hàng tiếp theo, hãy sử dụng 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

Chỉnh sửa:Để update một cột có tên khác theo nhận xét của 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. Chèn dữ liệu vào một dạng xem (SQL Server)

  2. Cách loại bỏ tiêu đề cột khi gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

  3. Nối các chuỗi bằng đường dẫn xml

  4. Truy xuất hình ảnh từ SQL Server 2008 và xử lý nó trong bộ điều khiển hình ảnh của asp.net

  5. Lỗi I / O:SSO Không thành công:Thư viện SSPI gốc không được tải