选择小于特定分钟的以分钟为单位的日期时间差

use*_*014 1 sql sql-server

我有一个这样的查询:

SELECT DATEDIFF(minute,t.Paydate,t.DelDate) as Mtime 
       FROM Transaction_tbl t WHERE Locid=6 
Run Code Online (Sandbox Code Playgroud)

这将返回如下结果:

Mtime
8
2
10
20
15
7
6
Run Code Online (Sandbox Code Playgroud)

但是,在该查询中,我必须给出条件,例如我只想显示小于 10 分钟或小于 15 分钟的结果。我还有一张桌子,它是location。在那,我有一个数据类型Time(0)的列timeinterval。实际上这个值我想在同一个查询中传递。那么我如何在不到 10 分钟的时间内重写我的查询显示结果呢?

Dha*_*val 5

ANDWHERE子句中添加条件:

SELECT  
    DATEDIFF(MINUTE, t.Paydate, t.DelDate) AS Mtime 
FROM Transaction_tbl t 
WHERE 
    Locid = 6
    AND DATEDIFF(MINUTE,t.Paydate,t.DelDate) < 10
Run Code Online (Sandbox Code Playgroud)

根据您的新疑问:

SELECT  
    DATEDIFF(MINUTE, t.Paydate, t.DelDate) AS Mtime,
    COUNT(*) AS Count 
FROM Transaction_tbl t 
WHERE 
    Locid = 6
GROUP BY Mtime
HAVING DATEDIFF(MINUTE, t.Paydate, t.DelDate) < 10
Run Code Online (Sandbox Code Playgroud)

你可以做这样的事情

SELECT  
   case when ( DATEDIFF(MINUTE, t.Paydate, t.DelDate)<10) then DATEDIFF(MINUTE, t.Paydate, t.DelDate) else null end AS lessthan10,
case when ( DATEDIFF(MINUTE, t.Paydate, t.DelDate)>10) then DATEDIFF(MINUTE, t.Paydate, t.DelDate) else null end AS greaterthan10,
    COUNT(*) AS Count 
FROM Transaction_tbl t 
WHERE 
    Locid = 6
GROUP BY Mtime
HAVING DATEDIFF(MINUTE, t.Paydate, t.DelDate) < 10
Run Code Online (Sandbox Code Playgroud)