在SQL中创建条件选择的条件中结合日期和小时?

问题描述 投票:0回答:1

下面的代码显示了现在和现在之前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)
sql-server date conditional-statements combine hour
1个回答
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())
© www.soinside.com 2019 - 2024. All rights reserved.