Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल - ऑपरेंड डेटा प्रकार डेटाटाइम 2 घटाव ऑपरेटर के लिए अमान्य है

जैसा कि टिप्पणियों में बताया गया है, आप टाइमस्टैम्प को - . से घटा नहीं सकते ऑपरेटर। 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 ओपी की टिप्पणी के अनुसार भिन्न नाम का एक कॉलम,

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 सर्वर प्रतिस्थापन () बनाम अनुवाद ():अंतर क्या हैं?

  2. QUOTED_IDENTIFIER को समझना

  3. SQL सर्वर क्वेरी में NULL को 0 से बदलना

  4. SQL Server 2008 में एक समग्र विदेशी कुंजी बनाना

  5. M1 Mac (ARM64) पर SQL सर्वर कैसे स्थापित करें