我正在尝试从表中获取前一天的记录,但我并没有找到如何完成它。需要你的帮助..
表:RECORD_DATA
id creationDate
1 | 2013-05-03 04:03:35 |
2 | 2013-05-03 04:03:35 |
现在我需要获取2013-05-03创建的所有记录。时间可以是任何东西。所以我的查询应该有LIKE运算符。
我正在使用下面的查询,它给了我空集。
select creationDate from RECORD_DATA
where creationDate LIKE DATE_SUB(STR_TO_DATE('2012-04-05','%d/%m/%Y'),INTERVAL 1 DAY);
答案 0 :(得分:19)
使用SQL完成后非常简单,只需添加条件
即可WHERE creationDate BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE()
没有必要转换creationDate,因为它已经是一个日期:)。而且我相信这将是检查它的最快方法(如果你查看大型数据集,这将很重要)。
答案 1 :(得分:2)
我认为应该这样做:
SELECT * FROM RECORD_DATA WHERE `creationDate` >= CURDATE()-1 and `creationDate` < CURDATE();
答案 2 :(得分:2)
这将在INDEX
上使用creationDate
(,如果有)。
SELECT *
FROM TableName
WHERE creationDate >= CURDATE() - INTERVAL 1 DAY AND
creationDate < CURDATE()
答案 3 :(得分:1)
这里的答案似乎是在回答“如何在过去24小时内找到东西?”,而不是“如何从上一个日历日期中找到东西?”。不同的问题。
如果您需要查找上一个日历日期的信息,可以尝试:
select creationDate from RECORD_DATA
where date(creationDate) = curdate() - INTERVAL 1 DAY;
无需将日期转换为字符串并进行字符串比较。
答案 4 :(得分:0)
您可以使用
SELECT *
FROM `tableName`
WHERE DAY(created) = DAY(CURRENT_DATE - INTERVAL 1 DAY)