我正试图从表中选择所有昨天的记录(不是最近24小时的记录)。相关字段定义为DateTime
(在Access 2007中),格式为dd/mm/yyyy hh:mm:ss
。
我的第一个想法(根据许多其他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
所以我的问题是你如何选择昨天的记录?
答案 0 :(得分:2)
你的WHERE子句需要包括昨天的所有日期/时间值(即昨天午夜到今天午夜之间的24小时),所以你需要这样做
SELECT *
FROM someTable
WHERE DateAdded >= DateAdd("d", -1, Date())
AND DateAdded < Date()