:
SELECT
CONVERT(VARCHAR(10),
CAST(SUM(DATEDIFF(Minute, startdate,EndDate)/60)
OVER (PARTITION BY clientId ORDER BY clientId)) AS VARCHAR(2))
+ '.'
+ RIGHT('00' + CONVERT(VARCHAR(2),
SUM(DATEDIFF(Minute, startdate, EndDate)) % 60), 2)
(OVER(PARTITION BY clientId ORDER BY clientId))
FROM tableX;
そうでない場合は、あなたが取得している:
メッセージ245、レベル16、状態1、行6 をvarchar値 '。'に変換すると変換に失敗しました。データ型intに変換します。 int
はdate type precedence大きいがあり、エンジンがSUM
(+
)の値に順番に.
int
に変換しようとしている あるためだ
。 3番目の引数はすでにRIGHT
関数を使用しているので文字列であるため、キャストする必要はありません。
あなたはこれを試みることができる:
SELECT CONVERT(VARCHAR(10), SUM(DATEDIFF(Minute, startdate,EndDate)) OVER (PARTITION BY clientId ORDER BY clientId)/60)
+ '.'
+ RIGHT('00' + CONVERT(VARCHAR(2), SUM(DATEDIFF(Minute, startdate, EndDate)) OVER(PARTITION BY clientId ORDER BY clientId) % 60), 2)
FROM tableX
問題は何ですか? –