ホームページ > データベース > mysql チュートリアル > MySQL で過去 30 日以内のレコードを効率的に取得するにはどうすればよいですか?

MySQL で過去 30 日以内のレコードを効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-17 01:02:26
オリジナル
625 人が閲覧しました

How to Efficiently Retrieve Records within the Last 30 Days in MySQL?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート