Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL - Tipe data operan datetime2 tidak valid untuk operator pengurangan

Seperti yang disebutkan dalam komentar, Anda tidak dapat mengurangi stempel waktu dengan - operator. Gunakan DATEDIFF fungsi sebagai gantinya.Untuk mendapatkan perbedaan dari baris saat ini dan stempel waktu baris berikutnya, gunakan 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

Sunting:Untuk update kolom bernama diff per komentar 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. Konfigurasi Cakupan Database SQL Server dan Koreksi Paket Otomatis

  2. Judul Kolom yang Dihasilkan Secara Dinamis dalam kueri sql

  3. Alias ​​referensi (dihitung dalam SELECT) dalam klausa WHERE

  4. Cara Mengubah Nilai untuk Edit X Teratas dan Memilih Baris X Teratas di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 20

  5. Ekspor tabel dari database ke file csv