使用日期时间字段选择昨天的记录
Posted
技术标签:
【中文标题】使用日期时间字段选择昨天的记录【英文标题】:Selecting Yesterdays Records using DateTime Field 【发布时间】:2014-10-30 14:11:33 【问题描述】:我正在尝试从表中选择所有昨天的记录(不是过去 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
所以我的问题是如何选择昨天的记录?
【问题讨论】:
【参考方案1】:您的 WHERE 子句需要包含昨天的所有日期/时间值(即昨天午夜和今天午夜之间的 24 小时时段),因此您需要这样做
SELECT *
FROM someTable
WHERE DateAdded >= DateAdd("d", -1, Date())
AND DateAdded < Date()
【讨论】:
非常感谢,现在明白了!以上是关于使用日期时间字段选择昨天的记录的主要内容,如果未能解决你的问题,请参考以下文章
MySQL - 当时间戳是日期的一部分时,如何查找昨天的记录
选择一条记录,因为它的日期字段在另一个记录日期字段 SQL 之后 X 天