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 OP のコメントによる diff という名前の列

    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. Oracle でプロシージャの結果を外部に表示する方法

    2. 私の11gオプティマイザー統計ジョブが終了しました–修正済み

    3. Oracleでデータ型charを使用して合計時間を計算する方法

    4. 接続を閉じずにPythonで更新されたMySQLテーブルエントリを取得する