4

6か月前から今日までの間にテーブル内のエントリを検索しようとしています。現在実行しているクエリは次のとおりです。

WHERE (DATE(l.date_fin) BETWEEN DATE(DATE_ADD(NOW(), INTERVAL -6 MONTH)) AND CURDATE())

ただし、私には正しく見えません。このクエリと同じ結果を取得するための、より簡潔で高速な方法があるように感じます。そのような方法はありますか?

4

4 に答える 4

12

これはあなたが望むものを手に入れるのに十分なはずです:

WHERE l.date_fin > CURRENT_DATE() - INTERVAL 6 MONTH;
于 2012-07-31T10:01:41.917 に答える
3

このようなものはどうですか?

SELECT l.date_fin FROM table WHERE TIMESTAMPDIFF(MONTH,l.date_fin,NOW()) < 6
于 2012-07-31T09:59:09.093 に答える
1

これを行う簡単な方法は次のとおりです。

WHERE DATE(l.date_fin) BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) AND CURRENT_DATE;

date_finにインデックスがある場合、使用できる最高のパフォーマンスを得るために:

WHERE l.date_fin BETWEEN CAST(DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) AS DATETIME) AND
    DATE_SUB(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AS DATETIME), INTERVAL 1 MINUTE);
于 2012-07-31T10:45:07.700 に答える
0
SELECT l.date_fin FROM table WHERE l.date_fin between current_date and  current_date+interval -6 month
于 2012-07-31T10:37:56.547 に答える