0

对于前一天,我使用了以下表达式。

     DATE_INSERTED >=DATEADD(day, DATEDIFF(day,0,GETDATE())-1,0) 
     AND  DATE_INSERTED < DATEADD(day, DATEDIFF(day,0,GETDATE()),0)

如何从昨天上午 10 点到今天上午 10 点获取行

4

2 回答 2

2
-- yesterday at midnight:
DECLARE @yesterday DATETIME = DATEADD(DAY,DATEDIFF(DAY,1,GETDATE()),0);

SELECT
...
WHERE DATE_INSERTED >= DATEADD(HOUR, 10, @yesterday)  -- 10 AM yesterday
  AND DATE_INSERTED <  DATEADD(HOUR, 34, @yesterday); -- 10 AM today
于 2013-08-07T14:33:00.120 回答
1

不要使用零,而是使用一些具有所需属性的日期(时间):

DATE_INSERTED >=
    DATEADD(day, DATEDIFF(day,'20010102',GETDATE()),'2001-01-01T10:00:00') 
 AND  DATE_INSERTED <
    DATEADD(day, DATEDIFF(day,'20010102',GETDATE()),'2001-01-02T10:00:00')

即,如果您将自 2001 年 1 月 2 日以来发生的总天数加到 2001 年 1 月 1 日上午 10:00,您将始终获得“昨天上午 10 点”的值。第二个几乎相同。

于 2013-08-07T14:27:06.760 回答