Объединение даты и часа, где Условие для создания условного выбора в SQL? - PullRequest
0 голосов
/ 09 февраля 2020

В приведенном ниже коде показаны значения DataX за 4 часа до и теперь, а также через 1 час. Например, час теперь равен 14, и мы видим значения DataX для 10-11-12-13-14-15 на сегодня. Моя проблема состоит в том, что, когда час становится для ex 0:00, из-за того, что условие Date настроено на сегодня, поэтому я не могу видеть вчерашние 20-21-22-23 значения. В свое время я просто хочу увидеть 6 значений, 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)

1 Ответ

1 голос
/ 09 февраля 2020

Самый простой способ, вероятно, состоит в том, чтобы создать значение DATETIME из столбцов даты и часа-часа - DATEADD(HOUR, [Hour], [Date]), затем вы можете использовать обычный оператор неравенства, чтобы найти, где это время даты больше 4 часов go, и менее чем за час вперед:

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