在 SQL 中结合条件中的日期和时间来创建条件选择?
Combining Date and Hour in where Condition to create conditional selection in SQL?
下面的代码显示了 4 小时前、现在和 1 小时后的 DataX 值。
例如,小时现在是 14,我们看到今天的 DataX 值是 10-11-12-13-14-15。
我的问题是,当小时变为前 0:00 时,由于日期条件已针对今天进行了调整,因此我看不到昨天的 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)
最简单的方法可能是从日期和小时列中创建一个 DATETIME
值 - DATEADD(HOUR, [Hour], [Date])
,然后您可以使用普通的不等式运算符来查找此日期时间大于 4 的位置小时前,提前不到一小时:
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())
下面的代码显示了 4 小时前、现在和 1 小时后的 DataX 值。 例如,小时现在是 14,我们看到今天的 DataX 值是 10-11-12-13-14-15。 我的问题是,当小时变为前 0:00 时,由于日期条件已针对今天进行了调整,因此我看不到昨天的 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)
最简单的方法可能是从日期和小时列中创建一个 DATETIME
值 - DATEADD(HOUR, [Hour], [Date])
,然后您可以使用普通的不等式运算符来查找此日期时间大于 4 的位置小时前,提前不到一小时:
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())