从上午10点开始获取昨天的行

时间:2013-08-07 14:23:00

标签: sql-server-2008-r2

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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点”的值。第二个几乎相同。