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

时间:2016-11-14 19:08:55

标签: sql getdate

我正在尝试获取最后一小时的数据,如果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。

2 个答案:

答案 0 :(得分:2)

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))

答案 1 :(得分:2)

另一个选项(假设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')

返回

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

编辑插图无需重播

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')

返回

2016-11-14 12:15:00.000