MySQL で 30 日の範囲内のレコードを取得する
ユーザーは、MySQL データベースに追加されたレコードを 30 日以内に取得しようとすると、問題が発生することがよくあります。特定の日付範囲、特に日付形式を使用する場合。この記事では、今日から過去 30 日間のレコードを取得し、表示目的で適切な日付形式を確保するための包括的なソリューションを提供することで、この課題に対処します。
質問で提供された元のクエリでは、制限に失敗するという問題が発生しました。過去 30 日間までの選択を行い、代わりにすべてのレコードを取得しました。これを修正するには、WHERE 句ではなく SELECT 句内で DATE_FORMAT 関数を適用することが重要です。修正されたクエリは次のとおりです。
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()
この変更により、クエリは、任意の時間コンポーネントを使用して当日に追加されたレコードを含む、過去 30 日以内に追加されたレコードを返すようになります。
以上が過去 30 日間の MySQL レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。