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