2017-09-14 5 views
0

t-sqlで2倍のデータ型を合計するにはどうすればよいですか?T-SQLで時間(7)データ型を合計する方法は?

declare @fTime time(7)='05:22'; 
declare @tTime time(7)='06:00'; 
declare @result time(7); 

私はこれを使用しましたが動作しません。

set @result=sum(@[email protected]); 
+0

時間は、時間ではなく、時間である。おそらく期間を意味してほしいでしょう。それ以外の場合は無意味です。または2回追加することができますが、折り返したときのキャリーはどうなりますか? – dlatikay

+0

@dlatikayはい、してください – motevalizadeh

+0

[オペランドのデータ型の時刻が重複する可能性がありますadd演算子](https://stackoverflow.com/questions/17578852/operand-data-type-time-is-invalid-for-add-オペレータ) – dlatikay

答えて

1

あなたがそうのように、他の1つの分を追加することができます。

select dateadd(minute,datediff(minute,'00:00',@tTime),@fTime) 

しかし、dlatikayによってコメントが正しいことに注意し、time(7)は、持続時間のものではありません。たとえば、分や秒を格納するなど、期間を整数として格納する方がよいでしょう。

0

あなたは次のようなものを使用できますか?

DECLARE @fTime TIME(7) = '05:22'; 
DECLARE @tTime TIME(7) = '06:00'; 
DECLARE @result TIME(7); 

SELECT @result = CAST([Hours] AS NVARCHAR) + ':' + CAST([Minutes] AS 
NVARCHAR) 
FROM (
SELECT cast(TotalTime AS INT)/60 AS [Hours] 
    ,CAST(TotalTime AS INT) % 60 AS [Minutes] 
FROM (
    SELECT fTime + tTime AS TotalTime 
    FROM (
     SELECT cast(SUBSTRING(cast(@ftime AS NVARCHAR), 1, 2) AS INT) * 60 + 
CAST(substring(cast(@ftime AS NVARCHAR), 4, 2) AS INT) AS fTime 
      ,cast(SUBSTRING(cast(@tTime AS NVARCHAR), 1, 2) AS INT) * 60 + 
CAST(substring(cast(@tTime AS NVARCHAR), 4, 2) AS INT) AS tTime 
     ) x 
    ) y 
) z 

SELECT @result 
関連する問題