Sql 以较短的方式从datetime检索分钟

Sql 以较短的方式从datetime检索分钟,sql,sql-server,Sql,Sql Server,上面的查询很好,但似乎太长了。是否有其他方法可以获得相同的结果,但根据当前的查询语法,可以使用更短的方法: (@DurationFrom IS NULL OR datepart(minute, convert(varchar, DATEADD(SECOND,datediff(second, main.StartTime, main.EndTime) , 0),108)) >= @DurationFrom) 根据当前查询语法,您可以执行以下操作: (@DurationFrom IS NUL

上面的查询很好,但似乎太长了。是否有其他方法可以获得相同的结果,但根据当前的查询语法,可以使用更短的方法:

(@DurationFrom IS NULL OR datepart(minute, convert(varchar, DATEADD(SECOND,datediff(second, main.StartTime, main.EndTime) , 0),108)) >= @DurationFrom)

根据当前查询语法,您可以执行以下操作:

(@DurationFrom IS NULL OR datepart(minute, convert(varchar, DATEADD(SECOND,datediff(second, main.StartTime, main.EndTime) , 0),108)) >= @DurationFrom)
试试这个:

select . . .
from . . .
where (@DurationFrom is null or 
        datediff(minute, main.StartTime, main.EndTime)) >= @DurationFrom;
这也适用于StartTime和EndTime之间的差异超过60分钟的代码(当前代码未检查该差异)

请尝试以下操作:

select . . .
from . . .
where (@DurationFrom is null or 
        datediff(minute, main.StartTime, main.EndTime)) >= @DurationFrom;

这也适用于StartTime和EndTime之间的差值超过60分钟(当前代码不检查)的代码。

(1)用您正在使用的数据库标记查询。(2) 解释您想要实现的逻辑,以及示例数据和期望的结果。(1)使用您正在使用的数据库标记您的查询。(2)解释你想要实现的逻辑,以及示例数据和期望的结果。这将不会给出正确的结果,DATEDIFF分钟不会像原始脚本那样考虑秒。这意味着“07:11:59”和“07:12:00”之间会有1分钟的时间,这将不会给出正确的结果,DATEDIFF分钟不会像原始脚本那样考虑秒。这意味着“07:11:59”和“07:12:00”之间将有1分钟的时间