7

我正在尝试从表中获取前一天的记录,但我没有找到确切的方法。需要你的帮助请..

表:RECORD_DATA

id       creationDate    
1   | 2013-05-03 04:03:35 |    
2   | 2013-05-03 04:03:35 | 

现在我需要获取 2013 年 5 月 3 日创建的所有记录。时间可以是任何东西。所以我的查询应该有 LIKE 运算符。

我正在使用下面的查询,它给了我空集。

select creationDate from RECORD_DATA 
where creationDate LIKE DATE_SUB(STR_TO_DATE('2012-04-05','%d/%m/%Y'),INTERVAL 1 DAY);
4

5 回答 5

23

使用 SQL 完成后相当简单,只需添加条件

WHERE creationDate BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE()

无需转换creationDate,因为它已经是一个日期:)。而且我相信这将是检查它的最快方法(如果您检查大型数据集,这将很重要)。

于 2013-05-04T09:11:57.463 回答
2

这里的答案似乎是在回答“我如何在过去 24 小时内找到一些东西?”,而不是“我如何从上一个日历日期找到一些东西?”。不同的问题。

如果您需要查找上一个日历日期的内容,您可以尝试:

select creationDate from RECORD_DATA 
where date(creationDate) = curdate() - INTERVAL 1 DAY;

无需将日期转换为字符串并进行字符串比较。

于 2018-11-15T21:59:07.880 回答
1

我认为应该这样做:

SELECT * FROM RECORD_DATA WHERE `creationDate` >= CURDATE()-1 and `creationDate` < CURDATE();
于 2013-05-04T09:10:59.070 回答
1

这将用于INDEXcreationDate如果有的话)。

SELECT  *
FROM    TableName
WHERE   creationDate >= CURDATE() - INTERVAL 1 DAY AND
        creationDate < CURDATE()
于 2013-05-04T09:11:34.673 回答
1

您可以使用

SELECT *
FROM `tableName`
WHERE DAY(created) = DAY(CURRENT_DATE - INTERVAL 1 DAY)
于 2016-02-01T12:40:49.350 回答