0

如何使用 SQL DATEADD() 函数查找该工作日的记录?例如:

SELECT * FROM records r
WHERE r.creationTime <= GETDATE()
  AND r.creationTime >= DATEADD(dd, -1 * hoursFromStartOfThisDay, GETDATE())

'hoursFromStartOfThisDay' 正是它所说的。

注意:我说的是工作日,所以从周一到周五上午 9 点到下午 5 点,如果这很重要的话。

多谢你们!

编辑:我也希望在一周/一个月的开始时应用一个解决方案,也许还有一个小时。

编辑:因此,如果一条记录是在 18/07/2011 08:55:00 创建的,而另一条记录是在 18/07/2011 09:05:00 创建的,我希望第二条记录被查询而不是第一条记录. 但是,如果当前的 GETDATE() 是 18/07/2011 09:15:00,那么它就会变得棘手。

添加怎么样AND r.creationTime >= '9am'

4

1 回答 1

1

你真的需要一个hoursFromStartOfThisDay变量吗?如果你的一天是静态的,从 9 点到 5 点,你可以只使用这个静态范围:

-- cache current date to avoid multiple calls
DECLARE @startOfADay INT
DECLARE @dayLength INT
DECLARE @currentDate DATETIME
SET @currentDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
SET @startOfADay = 9
SET @dayLength = 8

SELECT 
   ...
FROM
   ...
WHERE ...
BETWEEN 
      DATEADD(hh, @startOfADay, @currentDate) 
      AND 
      DATEADD(hh, @startOfADay + @dayLength, @currentDate)
于 2011-07-19T09:05:08.550 回答