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