select v1.*, datediff(ss,v1.dateofchange,v2.dateofchange) as acutaltime
from vActualTime v1 left join vActualTime v2
on v1.rowno=v2.rowno-1
FK_PatientId FK_Status_PatientId DateofChange rowno acutaltime
------------ ------------------- ----------------------- -------------------- -----------
3 16 2010-08-02 15:43:46.000 1 757
3 24 2010-08-02 15:56:23.000 2 96
3 26 2010-08-02 15:57:59.000 3 NULL
我正在使用Sql Server 2005
当我写这个
select v1.*, datediff(mi,v1.dateofchange,v2.dateofchange) as acutaltime,
convert(datetime,datediff(mi,v1.dateofchange,v2.dateofchange),108) as [date]
from vActualTime v1 left join vActualTime v2
on v1.rowno=v2.rowno-1
我明白了
FK_PatientId FK_Status_PatientId DateofChange rowno acutaltime date
------------ ------------------- ----------------------- -------------------- ----------- -----------------------
3 16 2010-08-02 15:43:46.000 1 13 1900-01-14 00:00:00.000
3 24 2010-08-02 15:56:23.000 2 1 1900-01-02 00:00:00.000
3 26 2010-08-02 15:57:59.000 3 NULL NULL
这应该被指定为00-00-000 00:13:00:0000
最佳答案
据我了解,您需要计算出的分钟数(您正在执行的datediff)并以时间格式108显示。
这应该将分钟转换为日期时间格式为108,即hh:mm:ss
select convert(varchar
,dateadd(minute
, datediff(mi,v1.dateofchange,v2.dateofchange), '00:00:00')
, 108
)