我要 select 最后一小时的结果

I want to select last hour results

SELECT DISTINCT
    ip.IPAddress,
    CONVERT(varchar, dan.AuditDate, 100) AS Date,     
    ip.AuditAction,ip.Username,
    (CASE 
         WHEN CONCAT(k.FirstName, ' ', k.LastName) IS NULL OR CONCAT(k.FirstName, ' ', k.LastName) = ' ' 
             THEN k.Name
             ELSE CONCAT(k.FirstName, ' ', k.LastName)
     END) AS 'Name' 
FROM 
    IPAddress ip
INNER JOIN
    user k ON k.ID = ip.PerformerID
INNER JOIN 
    audit dan ON ip.IPAddress = dan.Value1 
              AND ip.Date = CAST(dan.AuditDate AS Date) 
              AND ip.AuditAction = dan.AuditStr 
              AND ip.PerformerID = dan.PerformerID
INNER JOIN
    LoginMoreOne n ON n.LUsername = ip.Username 
                   AND n.LUsername IS NOT NULL
WHERE 
    LEN(ip.IPAddress) > 8 
    AND dan.AuditDate > DATEADD(HOUR, DATEDIFF(hour, 0, DATEADD(mi, 30, GETDATE())), 0)
GROUP BY 
    ip.IPAddress, ip.Date, ip.AuditAction,
    ip.Username, ip.PerformerID,  
    k.FirstName, k.LastName, k.Name,
    CAST(dan.AuditDate AS Date), dan.AuditDate

例如,如果我在下午 2.30 执行此查询,我想要下午 1 点到下午 2 点的结果,或者如果我在下午 3.10 执行此查询,我想要从下午 2 点到 3 点的结果,依此类推,如何我编辑我的 where 语句以获得所需的结果

表达式 dateadd(hour, datediff(hour, 0, getdate()), 0) 将为您提供当前时间的日期和时间,分、秒 = 0

-1 以 0 分钟 0 秒显示前一小时

    AuditDate >= dateadd(hour, datediff(hour, 0, getdate()) - 1, 0)
and AuditDate <  dateadd(hour, datediff(hour, 0, getdate()), 0)

改为

dan.AuditDate > DATEADD(HOUR, datediff(hour, 0, dateadd(mi, 30, GETDATE())), 0)

使用:

dan.AuditDate > DATEADD(HH, -1.5, GETDATE()) AND dan.AuditDate <= DATEADD(HH,-0.5, GETDATE())