我有一個選擇查詢,檢索所有3周齡的條目。Mysql選擇和日期> =當前日期 - 3周
我想知道是否有像where date> Expr (CURDATE() - 3 WEEKS)
這樣的表達式,或者我必須首先計算我的php腳本中的差異。
我的日期的格式是一個timestamp
這樣的:2010-06-21 16:59:59
真誠,
我有一個選擇查詢,檢索所有3周齡的條目。Mysql選擇和日期> =當前日期 - 3周
我想知道是否有像where date> Expr (CURDATE() - 3 WEEKS)
這樣的表達式,或者我必須首先計算我的php腳本中的差異。
我的日期的格式是一個timestamp
這樣的:2010-06-21 16:59:59
真誠,
可以使用DATEDIFF()
功能,像這樣:WHERE DATEDIFF(CURDATE(), date) = 21
。
使用時間戳的實際輸入比較好,
因爲它允許查詢緩存生效
來源: - 包含非確定型函數http://www.dangrossman.info/2007/04/26/mysql-tuning-disable-query-cache-on-frequently-updated-databases/
查詢不被高速緩存。這包括CURDATE(),RAND()或任何其他輸出不總是相同的函數。
從技術文檔: - http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html
很好的解釋,謝謝 –
您可以使用的代碼
where date>DATE_SUB(curdate(),INTERVAL 3 WEEK);
比上面的答案更復雜,但它可以幫助某人。謝謝=) –
@Raphaël 這個答案只計算一次DATE_SUB(),而安東尼的答案每行都計算一次。這個答案似乎是對我來說更好的選擇,因爲在某些情況下,性能差異可能很大。 – Balmipour
輕鬆以下行,我很喜歡。謝謝。 –