使用日期时间字段选择昨天的记录

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 - 当时间戳是日期的一部分时,如何查找昨天的记录

Android Room 获得昨天的最后记录

选择一条记录,因为它的日期字段在另一个记录日期字段 SQL 之后 X 天

SQL中哪个字段类别记录日期和哪个字段类别记录时间

在 laravel 4 中使用引导日期选择器时禁用昨天之前的日期

从日期字段中选择特定数据