2014-10-30 50 views
1

我想从表中选择所有昨天的记录(而不是最后24小时的记录)。有问题的字段被定义为DateTime(在Access 2007中)并且格式为dd/mm/yyyy hh:mm:ss使用日期时间字段选择Yesterday记录

我的第一个想法(根据许多其他Q&A's)将采取类似的做法:

SELECT * FROM someTable WHERE DateAdded = DateAdd("d", -1, Now()) 

尽管曾经提到过,在字段格式,则意味着作为条件比较时间值不返回任何结果好。

我的下一个想法是把DateTime领域转换成日期,就像这样:

SELECT * FROM someTable WHERE cDate(Added) = DateAdd("d", -1, cDate(Now())) 

再次,没有记录返回,虽然。

如果我运行下面的查询,但是,都返回29/10/2014

--SELECT yesterdays date 
SELECT DateAdd("d", -1, cDate(Now())) --Returns 29/10/2014 

--SELECT the date of the last record 
SELECT TOP 1 cDate(Added) FROM someTable ORDER BY Added DESC --Returns 29/10/2014 

所以我的问题是你如何选择昨天的记录?

回答

2

你的WHERE子句中需要包括从昨天所有的日期/时间值(在午夜到今天午夜昨天之间即24小时内),所以你需要做的

SELECT * 
FROM someTable 
WHERE DateAdded >= DateAdd("d", -1, Date()) 
    AND DateAdded < Date() 
+0

非常感谢,品牌现在感觉! – Gareth 2014-10-30 14:38:18

相关问题