【发布时间】:2011-06-24 07:22:38
【问题描述】:
我正在尝试从表中获取适合时隙的某些日期
- 时间段开始在当前日期时间floored到整点
- 时间段结束在当前 DateTimefloored 到整小时 加上 2 小时
所以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))
这应该给我当前活动时间段中的所有计算机名称和计划日期。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 query-optimization