MySQL クエリの最適化: 時間範囲内のレコードの取得
前の説明で、ユーザーはデータベースに追加されたレコードの取得に関するガイダンスを求めていました。過去 30 日以内。日付を mm/dd/yy 形式で表示するという特定の要件があります。提供された元のクエリでは、結果を目的の時間枠に制限できないという問題が発生しました。
調査の結果、問題は DATE_FORMAT 関数の誤った配置に起因していることが判明しました。目的のフィルタリングを実現するには、関数を WHERE 句ではなく SELECT 句に適用する必要があります。修正されたクエリは次のとおりです。
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
さらに、CURDATE() はタイムスタンプの日付部分のみを返すことに注意することが重要です。 create_date 列にゼロ以外の時刻コンポーネントを含む DATETIME 値が含まれている場合、元のクエリでは今日のレコードが除外されます。これに対処するには、代わりに NOW() を使用できます。
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
これらの修正により、クエリは指定された時間範囲と形式の要件を満たすレコードを正しく取得します。
以上がMySQL で過去 30 日以内のレコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。