从过去7天中选择行的最佳方法是什么?

时间:2009-09-29 21:06:14

标签: sql mysql datetime

从表中选择过去7天内创建的那些行的最佳方法是什么?

MySQL中有许多时间和日期函数,我对最简单的方法有点困惑。

为了这个问题,假设你有一个名为“my_table”的表,它包含一行“created_at”,这是一个DATETIME。

SELECT * FROM my_table WHERE ...

你会在WHERE子句中填写什么?

6 个答案:

答案 0 :(得分:14)

WHERE DATEDIFF(NOW(), created_at) <= 7;

我喜欢它,因为它的内容是:“现在和创建之间的日期差异最多为7天(天)。”在我自己的脑海里

答案 1 :(得分:12)

...WHERE created_at >= Date_Add(now(), INTERVAL -7 DAY)

这是我的首选方式,因为它很清楚。但是ADDDATE也很好(为了清晰起见,你也可以使用INTERVAL形式;默认为天,所以你会看到人们将其关闭)。您想要对created_at进行计算并将其与now()进行比较,因为这需要在每行created_at上进行计算(假设MySQL没有'优化它),而修改now()并与未修改的created_at进行比较意味着MySQL会对该位进行一次比较并在与行进行比较时使用结果,而不是提及索引。

答案 2 :(得分:4)

...... WHERE created_at&gt; = DATE_SUB(CURRENT_DATE,INTERVAL 7 DAY)

希望这会有所帮助

答案 3 :(得分:2)

 WHERE  ADDDATE(datefield, 7) > NOW();

答案 4 :(得分:2)

SELECT * FROM my_table
WHERE DATE(created_at) >= SUBDATE(DATE(NOW()), 7)

答案 5 :(得分:1)

SELECT * FROM my_table WHERE my_table.datefield&gt; sysdate - 7