2013-10-23 87 views
0

美好的一天。即時通訊使用的MS SQL Server 2005 Express和繼承人我的表結構:獲取精確計算總計小時和分鐘在sql服務器

 User |  Log_Date   |  Log_In_Time   |  Log_Out_Time  | 
----------------------------------------------------------------------------------------- 
    xxx  | 2013-10-02 23:00:31.623 | 2013-10-02 23:07:31.623 | 2013-10-03 01:08:31.623 | 

注:

LOG_OUT_TIME在其他日子是10月3日凌晨1:08分LOG_IN_TIME10月2日晚上11點

現在我想添加列:TOTAL

,它看起來像這樣:

 User |  Log_Date   |  Log_In_Time   |  Log_Out_Time  | TOTAL | 
--------------------------------------------------------------------------------------------------- 
    xxx  | 2013-10-02 23:00:31.623 | 2013-10-02 23:07:31.623 | 2013-10-03 01:08:31.623 | 2.08 | 

任何人能知道呢?

預先感謝您!

+1

當你預計'2.08'這只是幾個小時,你是否也想在幾分鐘之內(例如2小時1分鐘或2:01)? – bendataclear

回答

0

你可以使用DateDiff @Unknowymous,我會做的是秒比較,將其轉換爲浮點數併除以60。這將使您的分鐘,小時等縮放到您所需的精度。

DECLARE @diff float 
DECLARE @diffMin float 
DECLARE @diffHour float 
DECLARE @diffDay float 

SELECT @diff = cast(datediff(ss,Log_in_Time,Log_Out_Time) as FLOAT) 
SELECT @diffMin = @diff/60 
SELECT @diffHour = @diffMin/60 
SELECT @diffDay = @diffHour/24 

print @diff 
print @diffmin 
print @diffhour 
print @diffday 
1

這將工作:

SELECT CAST(DATEDIFF(hour, Log_In_Time, Log_Out_Time) AS varchar) + '.' + 
    CAST(DATEDIFF(mi, Log_In_Time, Log_Out_Time)/(60 * DATEDIFF(hour, Log_In_Time, Log_Out_Time)) AS varchar) 
FROM tableName 

我計算了小時和分鐘分開。

0
select 
cast(datepart(hour,Log_Out_Time - Log_Date) as varchar) + '.' + 
right('00' + cast(datepart(minute,Log_Out_Time - Log_Date) as varchar),2) 
2

非常簡單的方法:

CAST(Log_Out_Time - Log_In_Time AS TIME) 

給出:

02:01:00.0000000 

編輯:

精確查詢:

DECLARE @ST DATETIME = '2013-10-02 23:07:31.623' 
DECLARE @ET DATETIME = '2013-10-03 01:08:31.623' 

SELECT CAST(@ET - @ST AS TIME) 
+0

我在sql-server中試過這個,我收到以下錯誤:操作數數據類型時間對於減法運算符無效。 ?你能給出確切的查詢嗎? –

+0

@VijaykumarHadalgi我已經添加了確切的代碼,據我所知,這將只適用於SQL Server 2008及更高版本。 – bendataclear

+0

它工作正常! - thnks –