2011-08-03 279 views
2

我有幾個日期之間的平均持續時間(DATETIME格式)即。 1900-01-01 01:30.00.00。 如何將DATETIME轉換爲格式小時數:分鐘:秒,其中小時數可以多於24個 - 輸出格式可以是VARCHAR。T-SQL持續時間以小時爲單位:分鐘:秒

IE。

1 days 12 hours 5 minutes convert to 36:05:00 
2 days 1 hour 10 minutes 5 seconds convert to 49:10:05 

等等

DECLARE @date1 DATETIME = '2011-08-03 13:30' 
DECLARE @date2 DATETIME = '2011-08-03 13:00' 
DECLARE @date3 DATETIME = '2011-08-03 14:00' 
DECLARE @abc DATETIME = '2011-08-03 12:00' 

select CAST(AVG(CAST([email protected] as float)) as datetime) 
from 
(
    select 'data' as label, @date1 as data 
union all 
select 'data' as label, @date2 as data 
union all 
select 'data' as label, @date3 as data 
) as a 
group by label 

我想獲得結果爲一點30分00秒,這意味着平均時間爲1小時30分鐘。

我試了一下:

CONVERT(VARCHAR(10), CAST(AVG(CAST([email protected] as float)) as datetime), 108) 

但當時我只獲取HH時間部分:MM:SS。當我設置@abc = 2011-08-02時,結果將是相同的 - 這是不正確的。

國王的問候, 馬辛

回答

1
select cast(cast(cast(t as float) *24 as int) as varchar) + right(convert(varchar,t, 20), 6) 
from(
select cast(AVG(CAST([email protected] as float)) as datetime) t 
from 
( 
    select 'data' as label, @date1 as data 
union all 
select 'data' as label, @date2 as data 
union all 
select 'data' as label, @date3 as data 
) as a 
group by label 
) a 

結果:

1:30:00 
2

在T-SQL中的日期時間也恰恰說明,日期和時間,其中的時間不能超過24,因爲移動它到了第二天。您可以使用datepart將日期時間值分割出來,並將它們視爲整數,然後將它們重新加入到所需的字符串中。根據您的最終目標,您可能會更好地在應用程序或表示層中執行此類工作,其中更多通用語言通常具有更強大的日期時間庫來處理這些工作。

0

您無法將日期時間轉換爲處理非實際日期和時間。

但是,你可以得到一個輸出看起來像日期時間,只需通過連接一個小時字符串「:」爲分鐘,等

查找的DATEADD()DATEDIFF()功能...

0

我認爲你需要編寫一個採用整數參數(時間差秒)的標量值函數並根據需要進行格式化。例如,

CREATE FUNCTION intToDateTime (@time_in_secs BIGINT) RETURNS VARCHAR(30) 
AS 
BEGIN 
    DECLARE @retval VARCHAR(30); 
    SET @retval = cast(@time_in_secs/(60*60) as varchar(10))+':'+ 
    cast((@[email protected]_in_secs/(60*60)*3600)/60 as varchar(10))+':'+ 
    cast((@[email protected]_in_secs/(60)*60) as varchar(10)); 
return @retval; 
END 

此功能需要一些改變 - 你可能想要顯示前導零爲0-9;(i.g「00」,而不是「0」,因爲這功能目前做。)你也需要以更好的方式處理負值。
現在你可以使用它DATEDIFF(second, @val1,@val2)
希望我指出你正確的方向。

相關問題