我只希望持续时间少于10分钟。我目前的代码如下:
Duration = DateDiff(ss, TimeBegin, TimeEnd)
TimeBegin和TimeEnd是TIME格式。显然,持续时间现在回来了:
00:00:07
这就是我遇到麻烦的地方。我可以使用如下所示的语句:
<= 00:10:00 or <= '00:10:00'
基本上我想要:
Duration = (Datediff(ss, TimeBegin, TimeEnd) *ONLY IF LESS THAN 10 MINUTESg)
我之前在查询中已经说过,如果没有返回结果来创建NULL,那么当持续时间大于10分钟时,我只是想要忽略它,就像它不存在一样。
答案 0 :(得分:2)
DateDiff(ss, TimeBegin, TimeEnd)
为您提供秒数差异。只需使用Case
语句即可返回值,如果该值低于600(隐含...ELSE Null
):
set @Duration = CASE
WHEN DateDiff(ss, @TimeBegin, @TimeEnd) < 600
THEN DateDiff(ss, @TimeBegin, @TimeEnd)
END;
答案 1 :(得分:1)
同意@aucuparia。但是(这是主题启动器)小心使用datediffs是秒而不是分钟。他们的行为是不一样的,比如几个月/年的日期。我的意思是服务器对你的操作数进行舍入:
select datediff(mi,'2014-05-15 19:00:00','2014-05-15 19:10:59')
和
不一样select datediff(ss,'2014-05-15 19:00:00','2014-05-15 19:10:59')
只要执行它们并看到差异。第一个仍然是10分钟的差异,但第二个将被600秒'where'条款切断。