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
              )

10-02 02:09
查看更多