Я пытаюсь получить определенные даты, которые соответствуют временным интервалам из таблицы, где
- временной интервал начинается в текущем DateTime с полными до полного часа
- временной интервал заканчивается в текущем DateTime с полными до полного часа плюс 2 часа
поэтому DateTime, равный 2011-06-24 09:21:40.020
, может быть между:
2011-06-24 09:00:00.000 AND 2011-06-24 11:00:00.000
В настоящее время у меня есть это, но я думаю, что вложенный DATEADD
является избыточным. Есть ли более чистый способ сделать это?
SELECT dbo.Computer.ComputerName, dbo.Planned.DatePlanned
FROM dbo.Computer INNER JOIN
dbo.Planned ON dbo.Computer.ComputerID = dbo.Planned.ComputerID
WHERE dbo.Planned.DatePlanned
BETWEEN
(SELECT DATEADD(Hour, DATEDIFF(Hour, 0, GETDATE()), 0))
AND
(SELECT DATEADD(Hour, DATEDIFF(Hour, 0, DATEADD(Hour, 2, GETDATE())), 0))
Это должно дать мне все имена компьютеров и плановые даты в текущем активном временном интервале.