2013-03-07 81 views
0

我需要兩列在表中以下面的方式:SQL日期時間格式化

OverallTime | ElapsedTime 

10   | 3:12:30 

所以10將是一個天數和3點12分30秒爲3天12小時30分鐘。 然後,我會需要計算TimeLeft這將是

OverallTime - ElapsedTime 

什麼correcy數據類型,它可以在SQL數據庫代表呢?

這爲SQL Server 2008 R2

+1

?日期格式可能會因不同的SQL風格而有所不同。 – 2013-03-07 17:25:33

+0

假設SQL-Server:使用datetime數據類型,並根據需要使用datepart()函數將其拉開。 – 2013-03-07 17:26:04

+0

你是什麼意思_I需要表中的兩列_ – 2013-03-07 17:44:27

回答

1

對於SQL-服務器:OverallTime = daysElapsedTime = 'days:hours:minutes'

declare @d datetime= getdate() 

select OverallTime, 
     OverallTime + ':' + convert(varchar(5), @d, 108) ElapsedTime 
from (
    select right(convert(varchar(8), @d, 112),2) OverallTime 
) x 

DEMO 1

| OVERALLTIME | ELAPSEDTIME | 
----------------------------- 
|   07 | 07:17:32 | 

如果你的意思是你的約會如圖所示,需要找到OverallTime - ElapsedTime然後嘗試(用列名稱替換@ot@et);

declare @ot int = 10, @et varchar(10) = '3:12:30' 

select datediff(minute,time, OverallTime-days) [OverallTime - ElapsedTime] 
from (
select @ot OverallTime, convert(int,left(@et,charindex(':',@et,1)-1)) days, 
      right(@et, len(@et) - charindex(':',@et,1)) + ':00' time 
) x 

DEMO 2

| OVERALLTIME - ELAPSEDTIME | 
----------------------------- 
|      9330 | 
什麼是您使用RDBMS
+0

我想他也想計算'OverallTime'和'elapsedTime'列之間的'TimeLeft' – 2013-03-07 17:41:08

+1

@rs。用戶已經消失,給出了兩個答案。 – Kaf 2013-03-07 17:55:06