對於前一天我使用下面的表達式。獲取昨天的行從10AM開始
DATE_INSERTED >=DATEADD(day, DATEDIFF(day,0,GETDATE())-1,0)
AND DATE_INSERTED < DATEADD(day, DATEDIFF(day,0,GETDATE()),0)
如何從昨天上午10點行到今天上午10時
對於前一天我使用下面的表達式。獲取昨天的行從10AM開始
DATE_INSERTED >=DATEADD(day, DATEDIFF(day,0,GETDATE())-1,0)
AND DATE_INSERTED < DATEADD(day, DATEDIFF(day,0,GETDATE()),0)
如何從昨天上午10點行到今天上午10時
而不是使用零的,使用一些日期(時間)■具有所需性能:
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點」的值。第二個幾乎完全相同。
謝謝,達米安,這是我需要的。 – SMITH
-- 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
我建議使用'DATEADD'而不是像'-1'這樣的簡寫 - 這不適用於像'DATE'這樣的新類型。 'DATEADD'可以編寫更多的工作,但它可以讓您的代碼與所有類型保持一致和兼容。 –