私はtimediffフィールドを持っていますvarchar
このフィールドの合計を見つけたいのですが、エラーが発生します
"Syntax error converting the varchar value '02:00' to a column of data type int."
私の時差は
02:00
03:00
04:00
追加したいので9
SQLに表示する必要があります
私を助けてください
私を助けてくれてありがとう
私はtimediffフィールドを持っていますvarchar
このフィールドの合計を見つけたいのですが、エラーが発生します
"Syntax error converting the varchar value '02:00' to a column of data type int."
私の時差は
02:00
03:00
04:00
追加したいので9
SQLに表示する必要があります
私を助けてください
私を助けてくれてありがとう
MS SQLについて話している場合
あなたはこのようなことをすることができます
最初にこれによって時間表現を分に変換します
select (CONVERT(int,SUBSTRING('02:00',1,2))*60) +
CONVERT(int,SUBSTRING('02:00',4,2))
次に、その分の表現を使用して、このような加算を実行します
select
DATEADD(
minute,
(select (CONVERT(int,SUBSTRING('02:00',1,2))*60) +
CONVERT(int,SUBSTRING('02:00',4,2))),
getdate())
最終的な目標がすべての datadiff レコードの合計を取得することである場合は、最初に、ここで尋ねたhh:mm
のではなく、datediff を分単位で保存します。hh:mm
DateDiff を数分で保存する方法:
SELECT DATEDIFF(second,CAST(<timepart> AS DATETIME)
, CAST(<timepart> AS DATETIME))/60.0 AS MIN_DIFF;
例えば
SELECT DATEDIFF(second,CAST('10:00 AM' AS DATETIME)
, CAST('11:15 AM' AS DATETIME))/60.0 AS MIN_DIFF;
すべての分を合計する方法hh:mm
SELECT CAST((<total minutes> / 60) AS VARCHAR(8)) + ':'
+ CAST((<total minutes> % 60) AS VARCHAR(2))
例えば
SELECT CAST((390 / 60) AS VARCHAR(8)) + ':'
+ CAST((390 % 60) AS VARCHAR(2))
SUM
varchar 列では使用できません。こちらのドキュメントをご覧ください。
何を保存しているのか、どのように合計したいのかについて多くの情報を提供していませんが、最善の策は、コロンの前の数値を解析し、それを int に変換して合計することです。
幸運を!