2015-02-24 81 views
-2

我試圖從過去2天獲取所有記錄,但排除今天的日期。我希望獲得提交日期的姓名和地點僅包含最近2天的日期。 date_submitted的數據類型爲datetime如何在SQL中獲取最近2天的所有記錄

select name, location 
from myTable 
where date_submitted in (select CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
+1

爲什麼將日期轉換爲浮點數? – Zane 2015-02-24 16:34:53

+0

@Zane:它似乎是截斷日期的最佳表現方式:http://stackoverflow.com/a/923322/993547。 – 2015-02-25 07:51:10

+0

您的引用似乎表明'Cast(GetDate()as Date)'是首選的,因爲它被記錄爲正常工作,並且不依賴於'DATETIME'的當前二進制格式。對於你的意圖和清晰度在現實世界中具有相當的價值也更加清楚。 – HABO 2015-02-25 15:17:48

回答

4

請勿使用in,請使用>=。您還可以使用dateadd

where date_submitted >= cast(dateadd(day, -2, getdate()) as date) 
and date_submitted < cast(getdate() as date) 
+0

如何處理「不包括今天的日期」? – HABO 2015-02-24 16:32:29