我有这样的查询:
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
答案 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())。