我有一个查询功能,可以选择前几天的所有行。但是,我需要它只选择昨天日期的行,但我不确定如何包含前一天。
我目前的查询是:
SELECT pdate FROM table 1
WHERE pdate < Date(NOW()) + INTERVAL 1 DAY
答案 0 :(得分:1)
我认为它会看起来像这样,它具有使用索引的优势(如果你实现了它们)
SELECT pdate FROM table 1
WHERE pdate >= Date(NOW()) - INTERVAL 1 DAY
AND pdate < Date(NOW())
答案 1 :(得分:0)
您可以使用DATE_SUB()
函数获取昨天的日期,然后使用WHERE
子句条件来查找该日期,如下所示:
SELECT *
FROM myTable
WHERE DATE(pDate) = DATE_SUB(pDate, INTERVAL 1 DAY);
以下是可能对您有帮助的MySQL's Date and Time Functions列表。
注意:这样可行,但由于您在where子句的pDate列上使用了一个函数,因此无法利用您拥有的任何索引(请参阅下面的注释)。 Brian Driscoll给出了一个更好的答案。我选择留下这个答案,因为虽然它的效率较低,但我相信它更具可读性,因为where子句在检查内容时非常明确,而且更具可读性。这里的折衷是否值得,取决于开发者。