在sql server中根据时间更改DATEDIFF函数结果

时间:2014-06-09 10:46:22

标签: sql sql-server

我有这样的查询:

 SELECT t.Compl
    ,t.dtime
    ,case when l.edt is null or l.edt =0 then l.minEdt +l.BuffrEDT 
          else l.edt + l.BuffrEDT 
     end as EDT
    ,t.locid
    ,t.vtid
    ,t.lsttic
    ,c.Colname
    ,te.UniqueName
    ,DATEDIFF(minute,t.dtime,getdate()) as Duration, 
  FROM dbo.Transaction_tbl t
  left join PlateSource_tbl pl 
       on t.PSID=pl.PSID
  left join PlateCode_tbl pc 
       on t.PCdID=pc.PCdID
  left JOIN Color_tbl C 
       ON t.colid = c.colid 
  left JOIN Terminals_tbl te 
       ON k.tid = te.tid
  WHERE t.tbarcode = @carid 

现在我得到持续时间在几分钟..我想得到如果时间超过60分钟它需要显示1小时:20分钟其他明智(如果时间少于60分钟然后需要显示只有几分钟) ..我可以这样做吗?

我尝试像这样给出代码持续时间:

convert(varchar(12),
        DATEDIFF(minute,Datediff(minute,t.dtime,getdate()),0),114
       ) as Duration

但是那次得到的结果如下:-253440 actullay持续时间以分钟为单位:178

2 个答案:

答案 0 :(得分:1)

你需要写为:

CONVERT(varchar(5), DATEADD(mi, Datediff(minute,t.dtime,getdate()) , 0), 114) 

希望这会有所帮助!!

[编辑]

Case when Datediff(minute,t.dtime,getdate()) < 60 
then Cast (Datediff(minute,t.dtime,getdate()) as varchar)
else  CONVERT(varchar(5), DATEADD(mi, Datediff(minute,t.dtime,getdate()) , 0), 114)
end as Duration

答案 1 :(得分:0)

例如200分钟到3小时20分钟

选择分钟值/ 60小时,分钟值%60 AS分钟表

这里是MinuteValue的内容,你的DATEDIFF函数将变为DATEDIFF(分钟,t.dtime,getdate())。