MySQL SELECT最近几天?


71

我在玩MYSQL,我知道有一个limit命令可以显示一定数量的结果,但是我想知道MySQL是否只能显示最近3天之类的信息。就是想。

更新: 我使用NOW()来存储时间。


@Doug,请给我们更多信息。您的记录如何计算时间DATETIME,DATE,TIMESTAMP,纪元时间戳等?您是否要从现在开始(CURRENT_DATE()-INTERVAL 3 DAYS)或最近的记录中的最后三天?等等
pilcrow,2009年

Answers:


155

使用三天前的日期:

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL -3 DAY);

查看DATE_ADD文档。

或者您可以使用:

WHERE t.date >= ( CURDATE() - INTERVAL 3 DAY )

4
“ WHERE t.date> =(CURDATE()-INTERVAL 3 DAY)”应该足够
Salman A

很有意思!我尝试使用DATE_ADD运行该命令,但由于语法原因,该命令一直失败。但是,它在没有DATE_ADD的情况下有效,因此我仅使用CURDATE() - INTERVAL 3 DAY。这是为什么?
草莓

1
我通过phpmyadmin运行它,如果有所作为。
草莓

1
我发现BETWEEN (CURDATE() - INTERVAL 1 WEEK) AND CURDATE()也很好。内部差异吗?
caesarsol 2014年

DATE_ADD(CURDATE(),间隔-3天)更快
Michael Tanusenjaya 2015年

12

您可以在MySQL WHERE子句中使用此命令,以返回在过去7天/周内创建的记录:

created >= DATE_SUB(CURDATE(),INTERVAL 7 day)

还要在减法中使用NOW()来给出hh:mm:ss分辨率。因此,要返回在过去24小时内精确创建的记录(到第二个记录),可以执行以下操作:

created >= DATE_SUB(NOW(),INTERVAL 1 day)


2

您可以结合使用UNIX_TIMESTAMP()函数来执行此操作。

SELECT ... FROM ... WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(thefield) < 259200

1
@Turnor,请注意,日期并非总是由86,400秒组成,而leap秒和夏令时则是如此。
pilcrow,2009年

真正。但是很少有人需要这样的精度,而且听起来不像最初的问题那样。
特纳,

@pilcrow记住这一点,那么您将如何处理这个问题?
杰里米·维瑟

1
@JeremyVisser,我想减去INTERVAL 3 DAY,就像其他答案一样
pilcrow,2012年

-2

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL '-3' DAY);

在-3值上使用引号


-2
SELECT DATEDIFF(NOW(),pickup_date) AS noofday 
FROM cir_order 
WHERE DATEDIFF(NOW(),pickup_date)>2;

要么

SELECT * 
FROM cir_order 
WHERE cir_order.`cir_date` >= DATE_ADD( CURDATE(), INTERVAL -10 DAY )
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.