2013-02-15 44 views
1

我有一列Col1,格式爲HH:MM:SS,整數列爲Col2。我正在嘗試以HH:MM:SS的格式計算Col1/Col2。我怎樣才能做到這一點?將HH:MM:SS除以整數

我試過使用轉換函數,但是下面的查詢忽略了隱藏的值。 這是轉換的語句,我用:

CONVERT(VARCHAR,Col1/1920) + ':' + RIGHT('00' + CONVERT(VARCHAR, Col1% 60), 2) AS Time, 

我使用下面的查詢嘗試做師

select (DateTime),(Col1),(Col2), 
cast((Col2 - Col1) as int) 
    /case when [CallsHandledHalf] = 0 then null 
      else [Col2] end as [AVG] 
from Table 
where ValueID ='5122' 
and DateTime between '11/01/12 05:00' and '11/30/12 16:30' 
+0

PS Col1是表中的HH:MM:SS列 – 2013-02-15 22:36:30

+0

我認爲你使用的是SQL-Server? – ruakh 2013-02-15 22:42:16

+0

'Col1'(字符,整數,時間)的實際類型是什麼?格式是'絕對'值(時間)還是持續時間?如果絕對的話,在處理夏令時時會發生什麼?此外,請不要使用'BETWEEN'作爲日期/時間/時間戳,特別是在SQL Server上 - 請參閱[本博客文章](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do在-and-the-devil-have-in-common.aspx)獲取更多細節)。 – 2013-02-15 23:33:46

回答

1

假設你使用SQL Server(2008或更高版本),或許下面情況搞清楚你:

-- starting with a string in HH:MM:SS format 
declare @s varchar(8) 
set @s = '12:00:00' 

-- set a divisor 
declare @d int 
set @d = 2 

-- divide the total seconds by the divisor 
set @s = convert(time(0), dateadd(second, datediff(second, 0, @s)/@d, 0)) 

-- output the results '06:00:00' 
print @s 

請注意,你真的應該保持的時間值在time數據類型有開始,但有是允許的隱式轉換,可以讓你像這樣來回移動。