2013-08-07 82 views
0

對於前一天我使用下面的表達式。獲取昨天的行從10AM開始

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

如何從昨天上午10點行到今天上午10時

+1

我建議使用'DATEADD'而不是像'-1'這樣的簡寫 - 這不適用於像'DATE'這樣的新類型。 'DATEADD'可以編寫更多的工作,但它可以讓您的代碼與所有類型保持一致和兼容。 –

回答

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時的總數,那麼您總能得到一個「昨天上午10點」的值。第二個幾乎完全相同。

+0

謝謝,達米安,這是我需要的。 – SMITH

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