sql 中的最后一小时(不添加 -1 小时)数据

last hour(not add -1hr) data in sql

我正在尝试获取最后一小时的数据,如果 getdate() 返回我 '2016-11-14 13:09:09.653' 那么我想要来自 '2016-11-14 11:00:00.000' 到 '2016-11-14 12:00:00.000' 不只是 12:09 到 01:00.

SELECT *
FROM
   TableName
WHERE
   BETWEEN

    DATEADD(HOUR,DATEPART(HOUR,GETDATE()) - 2,CAST(CAST(GETDATE() AS DATE) AS DATETIME))

  AND

    DATEADD(HOUR,DATEPART(HOUR,GETDATE()) - 1,CAST(CAST(GETDATE() AS DATE) AS DATETIME))

另一种选择(假设SQL Server 2012+)

Select Format(DateAdd(HH,-2,GetDate()),'yyyy-MM-dd HH:00:00')
      ,Format(DateAdd(HH,-1,GetDate()),'yyyy-MM-dd HH:00:00')

Returns

(No column name)      (No column name)
2016-11-14 12:00:00   2016-11-14 13:00:00

EDIT Illustration No Need to Recast

Declare @Table table (SomeDateTime datetime)
Insert Into @Table values 
('2016-11-14 12:15:00'),
('2016-11-14 13:30:00')

Select * 
 From  @Table
 Where SomeDateTime Between Format(DateAdd(HH,-2,GetDate()),'yyyy-MM-dd HH:00:00') 
                        and Format(DateAdd(HH,-1,GetDate()),'yyyy-MM-dd HH:00:00')

Returns

2016-11-14 12:15:00.000