下面的代码显示了现在和现在之前4小时以及之后1小时的DataX值。例如,小时现在是14,而今天我们看到的是10-11-12-13-14-15的DataX值。我的问题是,当小时变为ex 0:00时,因为为今天调整了Date条件,所以我看不到昨天的20-21-22-23值。一次,我只想看到4个值,分别是4小时之前,现在和1小时之后。我该如何实现?
SELECT
Hour as Saat,
DataX
FROM CPS.dbo.CMM
Where Date = convert(varchar(10), getdate(), 102) and PowerPlantName in ('X') and Hour in (DATEPART(HOUR, GETDATE()),DATEPART(HOUR, GETDATE())-1,DATEPART(HOUR, GETDATE())-2,DATEPART(HOUR, GETDATE())-3,DATEPART(HOUR, GETDATE())-4,DATEPART(HOUR, GETDATE())+1)
最简单的方法可能是从日期和小时小时列中创建一个DATETIME
值-DATEADD(HOUR, [Hour], [Date])
,然后您可以使用普通的不等式运算符来查找该日期时间大于4小时且小于1的日期时间提前一个小时:
SELECT Hour as Saat,
DataX
FROM CPS.dbo.CMM
WHERE PowerPlantName in ('X')
AND DATEADD(HOUR, [Hour], [Date]) >= DATEADD(HOUR, -4, GETDATE())
AND DATEADD(HOUR, [Hour], [Date]) <= DATEADD(HOUR, 1, GETDATE())