Mysql选择和日期>;=当前日期-3周

Mysql选择和日期>;=当前日期-3周,mysql,date,Mysql,Date,我有一个select查询,它检索3周前的所有条目 我想知道是否有像where date>Expr(CURDATE()-3周)这样的表达式,或者我是否必须首先计算php脚本中的差异 我的日期格式是一个时间戳,如下所示:2010-06-21 16:59:59 诚恳地说,您可以像这样使用DATEDIFF()函数:其中DATEDIFF(CURDATE(),date)=21使用时间戳的实际输入更好, 因为它允许查询缓存生效 发件人:- 不缓存包含非确定性函数的查询。这包括CURDATE()、RAND()或

我有一个select查询,它检索3周前的所有条目

我想知道是否有像
where date>Expr(CURDATE()-3周)
这样的表达式,或者我是否必须首先计算php脚本中的差异

我的日期格式是一个
时间戳
,如下所示:
2010-06-21 16:59:59


诚恳地说,

您可以像这样使用
DATEDIFF()
函数:
其中DATEDIFF(CURDATE(),date)=21
使用时间戳的实际输入更好,
因为它允许查询缓存生效

发件人:-

不缓存包含非确定性函数的查询。这包括CURDATE()、RAND()或输出不总是相同的任何其他函数


从文档中:-

您可以使用以下代码行

where date>DATE_SUB(curdate(),INTERVAL 3 WEEK);

比上面的答案更复杂,但它可以帮助某人。谢谢=)@Raphaël这个答案只计算一次日期,而Anthony的答案对每一行都计算。对我来说,这个答案似乎是一个更好的选择,因为在某些情况下,性能差异可能是显著的。。