2012-08-11 49 views
-3

我timeDiff測量領域的varchar如何添加2分VARCHAR列在SQL

我想找到這個領域的總和,但它給錯誤的

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

我timeDiff測量就像

02:00 
03:00 
04:00 

我想添加並應顯示9在sql中

請幫我

感謝幫助我

+3

你會告訴我們你已經嘗試了什麼? – 2012-08-11 05:09:20

+1

02:00不是一個Int編號。您可以將小時(2)或分鐘(0)轉換爲Int,但兩者都不是 – 2012-08-11 05:09:25

+0

爲什麼不在幾分鐘內存儲timediff? – 2012-08-11 05:16:32

回答

0

你不能在VARCHAR列使用SUM。看看文檔here

你沒有給我們提供關於你正在存儲什麼或你想如何總結的很多信息,但你最好的選擇可能是解析出冒號前的數字,將它轉換爲int並將其相加。

祝你好運!

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()) 
0

如果你的最終目標是讓所有datadiff記錄總和hh:mm然後第一家店DATEDIFF在幾分鐘內,而不是hh:mm你問here.

如何存儲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)) 

See this fiddle for all your answers.