-3

私はtimediffフィールドを持っていますvarchar

このフィールドの合計を見つけたいのですが、エラーが発生します

"Syntax error converting the varchar value '02:00' to a column of data type int."

私の時差は

02:00
03:00
04:00

追加したいので9SQLに表示する必要があります

私を助けてください

私を助けてくれてありがとう

4

3 に答える 3

0

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())
于 2012-08-11T05:31:13.513 に答える
0

最終的な目標がすべての 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))

すべての回答については、このフィドルを参照してください。

于 2012-08-11T05:45:55.310 に答える
0

SUMvarchar 列では使用できません。こちらのドキュメントをご覧ください。

何を保存しているのか、どのように合計したいのかについて多くの情報を提供していませんが、最善の策は、コロンの前の数値を解析し、それを int に変換して合計することです。

幸運を!

于 2012-08-11T05:22:59.537 に答える