MySQL で INTERVAL と CURDATE を使用して時間ベースのクエリを簡素化する
MySQL で時間ベースのデータを扱う場合、多くの場合、日付の範囲や特定の時間間隔を操作する場合に必要です。 INTERVAL 関数と CURDATE 関数は、クエリを簡素化しカスタマイズするための強力な方法を提供します。
たとえば、特定の時間範囲のデータを取得する必要がある場合は、次の構文を使用できます:
<code class="sql">WHERE v.date > DATE_SUB(CURDATE(), INTERVAL num MONTH) AND v.date < CURDATE()
「num」を過去に遡る月数に置き換えます。これにより、指定した月のデータを取得するようにクエリが動的に調整され、月ごとに複数のクエリを作成する必要がなくなります。
この例では、月ごとにデータを取得します。これを行うには、ループを使用して月を反復します。
<code class="sql">FOR i IN REVERSE (1..12) LOOP SELECT s.GSP_nom, DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AS month, AVG((v.vote + v.prix) / 2) AS avg FROM votes_serveur v JOIN serveur s ON v.idServ = s.idServ WHERE v.date > DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AND v.date < DATE_ADD(CURDATE(), INTERVAL - MONTH(i-1)) GROUP BY s.GSP_nom ORDER BY avg DESC; END LOOP;</code>
このループは、過去 12 か月ごとにクエリを生成し、1 回の実行で必要なデータを提供します。 INTERVAL と CURDATE を利用すると、複雑な時間ベースのクエリを合理化し、反復的なコードの必要性を減らし、データベース操作の効率を向上させることができます。
以上がINTERVAL と CURDATE を使用して MySQL で時間ベースのクエリを効率化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。