2013-03-07 121 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